--- spellcast-1.0.orig/engine.c +++ spellcast-1.0/engine.c @@ -1,11 +1,18 @@ #include #include +#include +#include #include "handwave.h" #include "internal.h" + +#include +#define _(String) gettext (String) + + static char bigbuf[2048], bigbuf2[2048]; -static char smallbuf[512]; +/* static char smallbuf[512]; */ extern void find_castspells(); extern void execute_spells(), execute_monsters(); @@ -112,28 +119,28 @@ { switch (val) { case Gesture_DIGIT: - return "digit"; + return _("digit"); break; case Gesture_FINGERS: - return "fingers"; + return _("fingers"); break; case Gesture_PALM: - return "palm"; + return _("palm"); break; case Gesture_WAVE: - return "wave"; + return _("wave"); break; case Gesture_CLAPHALF: - return "clap"; + return _("clap"); break; case Gesture_SNAP: - return "snap"; + return _("snap"); break; case Gesture_KNIFE: - return "stab"; + return _("stab"); break; case Gesture_NOTHING: - return "nothing"; + return _("nothing"); break; default: return "ERROR:UNKNOWN"; @@ -189,7 +196,7 @@ struct realgame *self = (struct realgame *)malloc(sizeof(struct realgame)); int ix; - srandom(getpid() + rock + numplayers); + srandom((unsigned int) (getpid() + rock + numplayers)); if (!self) return NULL; @@ -203,7 +210,7 @@ init_transcript(self); if (numplayers > MAXPLAYERS) { - PrintMsg("Too many players requested.\n"); + PrintMsg(_("Too many players requested.\n")); return NULL; } @@ -214,7 +221,7 @@ self->wiz[ix]->hitpoints = 15; self->wiz[ix]->max_hitpoints = 15; - self->wiz[ix]->name = names[ix]; + self->wiz[ix]->name = _(names[ix]); self->wiz[ix]->gender = genders[ix]; self->wiz[ix]->numgests = 0; @@ -228,8 +235,8 @@ self->wiz[ix]->delay_time = 0; self->wiz[ix]->delay_bank = (-1); - sprintf(bigbuf, "%s strides defiantly into the arena. The referee casts the formal Dispel Magic and Anti-Spell on %s....\n", self->wiz[ix]->name, pro_him(self->wiz[ix]->gender)); - PrintMsg2(ix, "You advance confidently into the arena. The referee casts the formal Dispel Magic and Anti-Spell on you....\n", bigbuf); + sprintf(bigbuf, _("%s strides defiantly into the arena. The referee casts the formal Dispel Magic and Anti-Spell on %s....\n"), self->wiz[ix]->name, pro_him(self->wiz[ix]->gender)); + PrintMsg2(ix, _("You advance confidently into the arena. The referee casts the formal Dispel Magic and Anti-Spell on you....\n"), bigbuf); } self->cre_size = 4; @@ -254,7 +261,7 @@ ix = 1; while (1) { create_creature(self, ix, 0); - printf("%s\n", self->cre[self->numcres-1].name); + printf(_("%s\n"), self->cre[self->numcres-1].name); ix++; if (ix==7) ix=1; } @@ -305,7 +312,7 @@ case SP__AMNESIA: wiz->gests[gnum].did[0] = previous_gesture(wiz, gnum, 0); wiz->gests[gnum].did[1] = previous_gesture(wiz, gnum, 1); - sprintf(bigbuf, "In a fit of absent-mindedness, %s repeats %s gestures from last turn: %s with the left hand, %s with the right.\n", wiz->name, pro_his(wiz->gender), gesture_name(wiz->gests[gnum].did[0]), gesture_name(wiz->gests[gnum].did[1])); + sprintf(bigbuf, _("In a fit of absent-mindedness, %s repeats %s gestures from last turn: %s with the left hand, %s with the right.\n"), wiz->name, pro_his(wiz->gender), gesture_name(wiz->gests[gnum].did[0]), gesture_name(wiz->gests[gnum].did[1])); PrintMsg(bigbuf); break; case SP__CONFUSION: @@ -320,7 +327,7 @@ if (wiz->mind_caster==1 && wiz->perm.mind_spell==SP__CONFUSION) { wiz->perm.mind_detail = wiz->gests[gnum].did[jx] | (jx ? QuVal_Hand_Right : QuVal_Hand_Left); } - sprintf(bigbuf, "%s accidentally makes a %s with %s %s hand.\n", wiz->name, gesture_name(wiz->gests[gnum].did[jx]), pro_his(wiz->gender), (jx?"right":"left")); + sprintf(bigbuf, _("%s accidentally makes a %s with %s %s hand.\n"), wiz->name, gesture_name(wiz->gests[gnum].did[jx]), pro_his(wiz->gender), (jx?_("right"):_("left"))); PrintMsg(bigbuf); break; case SP__CHARM_PERSON: @@ -349,7 +356,7 @@ if ((wiz->mind_caster & 1024) && wiz->perm.mind_spell==SP__CHARM_PERSON) { wiz->perm.mind_detail = wiz->gests[gnum].did[jx] | (jx ? QuVal_Hand_Right : QuVal_Hand_Left); } - sprintf(bigbuf, "%s mysteriously makes a %s with %s %s hand.\n", wiz->name, gesture_name(wiz->gests[gnum].did[jx]), pro_his(wiz->gender), (jx?"right":"left")); + sprintf(bigbuf, _("%s mysteriously makes a %s with %s %s hand.\n"), wiz->name, gesture_name(wiz->gests[gnum].did[jx]), pro_his(wiz->gender), (jx?_("right"):_("left"))); PrintMsg(bigbuf); break; case SP__FEAR: @@ -366,16 +373,16 @@ } switch (jx) { case 1: - sprintf(bigbuf, "Terrified, %s does nothing with %s left hand.\n", wiz->name, pro_his(wiz->gender)); + sprintf(bigbuf, _("Terrified, %s does nothing with %s left hand.\n"), wiz->name, pro_his(wiz->gender)); break; case 2: - sprintf(bigbuf, "Terrified, %s does nothing with %s right hand.\n", wiz->name, pro_his(wiz->gender)); + sprintf(bigbuf, _("Terrified, %s does nothing with %s right hand.\n"), wiz->name, pro_his(wiz->gender)); break; case 3: - sprintf(bigbuf, "Terrified, %s does nothing with either hand.\n", wiz->name); + sprintf(bigbuf, _("Terrified, %s does nothing with either hand.\n"), wiz->name); break; case 0: - sprintf(bigbuf, "%s is terrified, but manages %s gestures anyway.\n", wiz->name, pro_his(wiz->gender)); + sprintf(bigbuf, _("%s is terrified, but manages %s gestures anyway.\n"), wiz->name, pro_his(wiz->gender)); break; } PrintMsg(bigbuf); @@ -402,13 +409,13 @@ val = Gesture_NOTHING; break; default: - PrintMsg("ERROR: paralysis previous_gesture returned bad value.\n"); + PrintMsg(_("ERROR: paralysis previous_gesture returned bad value.\n")); val = Gesture_NOTHING; break; } wiz->gests[gnum].did[jx] = val; wiz->hand_paralyzed = jx; - sprintf(bigbuf, "%s's %s hand is frozen in a %s.\n", wiz->name, (jx?"right":"left"), gesture_name(wiz->gests[gnum].did[jx])); + sprintf(bigbuf, _("%s's %s hand is frozen in a %s.\n"), wiz->name, (jx?_("right"):_("left")), gesture_name(wiz->gests[gnum].did[jx])); PrintMsg(bigbuf); break; default: @@ -423,7 +430,7 @@ /* move this down? */ if (wiz->gests[gnum].did[0] == Gesture_KNIFE && wiz->gests[gnum].did[1] == Gesture_KNIFE) { - PrintMsg2(ix, "You cannot stab with both hands!\n", NULL); + PrintMsg2(ix, _("You cannot stab with both hands!\n"), NULL); wiz->gests[gnum].did[1] = Gesture_NOTHING; } } /* end if self->turnactive[ix] */ @@ -442,14 +449,14 @@ if (foundlist[SP__SURRENDER]) { foundlist[SP__SURRENDER] = 0; self->wiz[ix]->surrendered = 1; - sprintf(bigbuf, "%s makes the gesture of surrender!\n", self->wiz[ix]->name); - PrintMsg2(ix, "Oh, dear. You seem to have surrendered.\n", bigbuf); + sprintf(bigbuf, _("%s makes the gesture of surrender!\n"), self->wiz[ix]->name); + PrintMsg2(ix, _("Oh, dear. You seem to have surrendered.\n"), bigbuf); } restrict_gestures(self, ix); } /* end if self->turnactive[ix] */ - Queries(self->numqueries, self->querylist); /* "what spell do you want ot cast with your * hand?" questions. */ + Queries(self->numqueries, self->querylist); /* _("what spell do you want ot cast with your * hand?") questions. */ build_cast_list(self); if (self->turntype == Turn_HASTE) { self->hastelist = self->castlist; @@ -503,12 +510,12 @@ self->wiz[ix]->timestop--; if (self->wiz[ix]->timestop) { jx++; - sprintf(bigbuf, "%s accelerates into a flickering blur.\n", self->wiz[ix]->name); - PrintMsg2(ix, "Everything around you stops dead. The world is silent and motionless.\n", bigbuf); + sprintf(bigbuf, _("%s accelerates into a flickering blur.\n"), self->wiz[ix]->name); + PrintMsg2(ix, _("Everything around you stops dead. The world is silent and motionless.\n"), bigbuf); } else { - sprintf(bigbuf, "%s reappears, moving at normal speed.\n", self->wiz[ix]->name); - PrintMsg2(ix, "Everything begins moving again.\n", bigbuf); + sprintf(bigbuf, _("%s reappears, moving at normal speed.\n"), self->wiz[ix]->name); + PrintMsg2(ix, _("Everything begins moving again.\n"), bigbuf); } } } @@ -517,11 +524,11 @@ self->cre[ix].timestop--; if (self->cre[ix].timestop) { jx++; - sprintf(bigbuf, "%s accelerates into a flickering blur.\n", self->cre[ix].name); + sprintf(bigbuf, _("%s accelerates into a flickering blur.\n"), self->cre[ix].name); PrintMsg(bigbuf); } else { - sprintf(bigbuf, "%s reappears, moving at normal speed.\n", self->cre[ix].name); + sprintf(bigbuf, _("%s reappears, moving at normal speed.\n"), self->cre[ix].name); PrintMsg(bigbuf); } } @@ -538,17 +545,17 @@ if (self->wiz[ix]->haste==4) { self->wiz[ix]->haste--; jx++; - sprintf(bigbuf, "%s begins moving very quickly.\n", self->wiz[ix]->name); - PrintMsg2(ix, "Everyone else begins moving very slowly.\n", bigbuf); + sprintf(bigbuf, _("%s begins moving very quickly.\n"), self->wiz[ix]->name); + PrintMsg2(ix, _("Everyone else begins moving very slowly.\n"), bigbuf); } else if (self->wiz[ix]->haste) { jx++; - sprintf(bigbuf, "%s is still moving quickly.\n", self->wiz[ix]->name); - PrintMsg2(ix, "Everyone else is still moving slowly.\n", bigbuf); + sprintf(bigbuf, _("%s is still moving quickly.\n"), self->wiz[ix]->name); + PrintMsg2(ix, _("Everyone else is still moving slowly.\n"), bigbuf); } else { - sprintf(bigbuf, "%s slows down to normal speed.\n", self->wiz[ix]->name); - PrintMsg2(ix, "Everyone comes back up to normal speed.\n", bigbuf); + sprintf(bigbuf, _("%s slows down to normal speed.\n"), self->wiz[ix]->name); + PrintMsg2(ix, _("Everyone comes back up to normal speed.\n"), bigbuf); } } } @@ -558,16 +565,16 @@ if (self->cre[ix].haste==4) { self->cre[ix].haste--; jx++; - sprintf(bigbuf, "%s begins moving very quickly.\n", self->cre[ix].name); + sprintf(bigbuf, _("%s begins moving very quickly.\n"), self->cre[ix].name); PrintMsg(bigbuf); } else if (self->cre[ix].haste) { jx++; - sprintf(bigbuf, "%s is still moving quickly.\n", self->cre[ix].name); + sprintf(bigbuf, _("%s is still moving quickly.\n"), self->cre[ix].name); PrintMsg(bigbuf); } else { - sprintf(bigbuf, "%s slows down to normal speed.\n", self->cre[ix].name); + sprintf(bigbuf, _("%s slows down to normal speed.\n"), self->cre[ix].name); PrintMsg(bigbuf); } } @@ -724,19 +731,19 @@ if (targettype==QuVal_Target_Wizard) { if (targetnum >= 0 && targetnum < self->numtargets[0]) return self->targetlist[0][targetnum].name; - return "ERROR:NOBODY-wiz"; + return _("ERROR:NOBODY-wiz"); } else if (targettype==QuVal_Target_Creature) { if (targetnum >= 0 && targetnum < self->numtargets[1]) return self->targetlist[1][targetnum].name; - return "ERROR:NOBODY-cre"; + return _("ERROR:NOBODY-cre"); } else if (targettype==QuVal_Target_Corpse) { if (targetnum >= 0 && targetnum < self->numtargets[2]) return self->targetlist[2][targetnum].name; - return "ERROR:NOBODY-corpse"; + return _("ERROR:NOBODY-corpse"); } - else return "ERROR:NOBODY-atall"; + else return _("ERROR:NOBODY-atall"); } @@ -941,7 +948,7 @@ } break; default: - PrintMsg("ERROR: Unknown turn type\n"); + PrintMsg(_("ERROR: Unknown turn type\n")); break; } } @@ -990,7 +997,7 @@ rlist[rcount] = jx | QuVal_Hand_Both; break; default: - PrintMsg("ERROR in restrict_gestures\n"); + PrintMsg(_("ERROR in restrict_gestures\n")); break; } } @@ -1163,17 +1170,17 @@ (*ppt) && (*ppt)!=res; ppt = (&((*ppt)->next))); if (!(*ppt)) { - PrintMsg("ERROR: Unable to find Delayed spell.\n"); + PrintMsg(_("ERROR: Unable to find Delayed spell.\n")); } else { *ppt = res->next; res->next = NULL; - sprintf(bigbuf, "You cast %s; the spell is caught in the web of your Delayed Effect. It rises to hover by your head.\n", spelllist[res->spellnum].name); - sprintf(bigbuf2, "%s casts %s; the spell is caught in the web of %s Delayed Effect.\n", wiz->name, spelllist[res->spellnum].name, pro_his(wiz->gender)); + sprintf(bigbuf, _("You cast %s; the spell is caught in the web of your Delayed Effect. It rises to hover by your head.\n"), _(spelllist[res->spellnum].name)); + sprintf(bigbuf2, _("%s casts %s; the spell is caught in the web of %s Delayed Effect.\n"), wiz->name, _(spelllist[res->spellnum].name), pro_his(wiz->gender)); PrintMsg2(wiznum, bigbuf, bigbuf2); if (wiz->delay_bank != (-1)) { - sprintf(bigbuf, "The %s spell that you had caught previously is lost.\n", spelllist[wiz->delay_bank].name); - sprintf(bigbuf2, "The %s spell that %s had caught previously is lost.\n", spelllist[wiz->delay_bank].name, wiz->name); + sprintf(bigbuf, _("The %s spell that you had caught previously is lost.\n"), _(spelllist[wiz->delay_bank].name)); + sprintf(bigbuf2, _("The %s spell that %s had caught previously is lost.\n"), _(spelllist[wiz->delay_bank].name), wiz->name); PrintMsg2(wiznum, bigbuf, bigbuf2); wiz->delay_bank = (-1); } @@ -1214,7 +1221,7 @@ if (res) { res->permanent = 1; - sprintf(bigbuf, "Your Permanency spell wraps itself around your %s spell.\n", spelllist[res->spellnum].name); + sprintf(bigbuf, _("Your Permanency spell wraps itself around your %s spell.\n"), _(spelllist[res->spellnum].name)); PrintMsg2(wiznum, bigbuf, NULL); wiz->perm_time = 0; } @@ -1237,7 +1244,7 @@ add_query(self, tmp->caster, spelltargetlist[tmp->spellnum], tmp->spellnum | orval); } - Queries(self->numqueries, self->querylist); /* "who do you want to cast X on?" queries */ + Queries(self->numqueries, self->querylist); /* _("who do you want to cast X on?") queries */ for (tmp=self->castlist, jx=0; tmp; tmp=tmp->next, jx++) { if (spelltargetlist[tmp->spellnum]==Qu_NoQuery) { tmp->targettype = (-1); @@ -1274,37 +1281,37 @@ /* message already printed */ break; case 4: - sprintf(bigbuf, "%s starts to look hot and flushed.\n", fred->both.name); + sprintf(bigbuf, _("%s starts to look hot and flushed.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "You begin to feel somewhat feverish.\n", bigbuf); + PrintMsg2(cnum, _("You begin to feel somewhat feverish.\n"), bigbuf); else PrintMsg(bigbuf); break; case 3: - sprintf(bigbuf, "%s looks even more flushed.\n", fred->both.name); + sprintf(bigbuf, _("%s looks even more flushed.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "Your fever is growing worse.\n", bigbuf); + PrintMsg2(cnum, _("Your fever is growing worse.\n"), bigbuf); else PrintMsg(bigbuf); break; case 2: - sprintf(bigbuf, "%s is flushed and sweating, and seems to be somewhat unsteady on %s feet.\n", fred->both.name, pro_his(fred->both.gender)); + sprintf(bigbuf, _("%s is flushed and sweating, and seems to be somewhat unsteady on %s feet.\n"), fred->both.name, pro_his(fred->both.gender)); if (wizflag) - PrintMsg2(cnum, "You are very hot and somewhat dizzy, and your bones are starting to ache.\n", bigbuf); + PrintMsg2(cnum, _("You are very hot and somewhat dizzy, and your bones are starting to ache.\n"), bigbuf); else PrintMsg(bigbuf); break; case 1: - sprintf(bigbuf, "%s is both flushed and shivering violently.\n", fred->both.name); + sprintf(bigbuf, _("%s is both flushed and shivering violently.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "You are feverish and shivering at the same time, and you ache all over.\n", bigbuf); + PrintMsg2(cnum, _("You are feverish and shivering at the same time, and you ache all over.\n"), bigbuf); else PrintMsg(bigbuf); break; case 0: - sprintf(bigbuf, "%s crumples to the ground, agony on %s sweating features.\n", fred->both.name, pro_his(fred->both.gender)); + sprintf(bigbuf, _("%s crumples to the ground, agony on %s sweating features.\n"), fred->both.name, pro_his(fred->both.gender)); if (wizflag) - PrintMsg2(cnum, "Your knees give way and you fall to the ground. Your head pounds unmercifully as consciousness slips away....\n", bigbuf); + PrintMsg2(cnum, _("Your knees give way and you fall to the ground. Your head pounds unmercifully as consciousness slips away....\n"), bigbuf); else PrintMsg(bigbuf); fred->both.alive = 0; @@ -1366,8 +1373,8 @@ for (ix=0; ixnumplayers; ix++) { if (self->wiz[ix]->alive && self->wiz[ix]->hitpoints <= 0) { - sprintf(bigbuf, "%s has died!\n", self->wiz[ix]->name); - PrintMsg2(ix, "You have died!\n", bigbuf); + sprintf(bigbuf, _("%s has died!\n"), self->wiz[ix]->name); + PrintMsg2(ix, _("You have died!\n"), bigbuf); self->wiz[ix]->alive = 0; clear_out_spells(self->wiz[ix], 1); write_gestures(self, self->wiz[ix], Gesture_NOTHING, Gesture_NOTHING); @@ -1380,8 +1387,8 @@ if (self->wiz[ix]->delay_time) { self->wiz[ix]->delay_time--; if (self->wiz[ix]->delay_time==0) { - sprintf(bigbuf, "The Delayed Effect spell hovering around %s dies away.\n", self->wiz[ix]->name); - PrintMsg2(ix, "The Delayed Effect spell hovering around you dies away.\n", bigbuf); + sprintf(bigbuf, _("The Delayed Effect spell hovering around %s dies away.\n"), self->wiz[ix]->name); + PrintMsg2(ix, _("The Delayed Effect spell hovering around you dies away.\n"), bigbuf); } } } @@ -1389,15 +1396,15 @@ if (self->wiz[ix]->perm_time) { self->wiz[ix]->perm_time--; if (self->wiz[ix]->perm_time==0) { - sprintf(bigbuf, "The Permanency spell hovering around %s dies away.\n", self->wiz[ix]->name); - PrintMsg2(ix, "The Permanency spell hovering around you dies away.\n", bigbuf); + sprintf(bigbuf, _("The Permanency spell hovering around %s dies away.\n"), self->wiz[ix]->name); + PrintMsg2(ix, _("The Permanency spell hovering around you dies away.\n"), bigbuf); } } } } for (ix=0; ixnumcres; ix++) { if (self->cre[ix].alive && self->cre[ix].hitpoints <= 0) { - sprintf(bigbuf, "%s has died.\n", self->cre[ix].name); + sprintf(bigbuf, _("%s has died.\n"), self->cre[ix].name); PrintMsg(bigbuf); self->cre[ix].alive = 0; clear_out_spells(&(self->cre[ix]), 0); @@ -1421,18 +1428,18 @@ break; if (numsurr==0) { - sprintf(bigbuf, "%s is the sole survivor!\n", self->wiz[ix]->name); + sprintf(bigbuf, _("%s is the sole survivor!\n"), self->wiz[ix]->name); PrintMsg(bigbuf); } else if (numsurr==1) { for (jx=0; jxnumplayers; jx++) if (self->wiz[jx]->alive && self->wiz[jx]->surrendered) break; - sprintf(bigbuf, "%s has surrendered to %s!\n", self->wiz[jx]->name, self->wiz[ix]->name); + sprintf(bigbuf, _("%s has surrendered to %s!\n"), self->wiz[jx]->name, self->wiz[ix]->name); PrintMsg(bigbuf); } else { - sprintf(bigbuf, "All of %s's opponents have surrendered!\n", self->wiz[ix]->name); + sprintf(bigbuf, _("All of %s's opponents have surrendered!\n"), self->wiz[ix]->name); PrintMsg(bigbuf); } @@ -1441,7 +1448,7 @@ else { /* nobody left alive (and unsurrendered) */ if (numsurr==0) { - PrintMsg("Everyone is dead!\n"); + PrintMsg(_("Everyone is dead!\n")); return MAXPLAYERS; } @@ -1449,15 +1456,15 @@ for (jx=0; jxnumplayers; jx++) if (self->wiz[jx]->alive && self->wiz[jx]->surrendered) break; - sprintf(bigbuf, "%s finds that there is nobody left to surrender to!\n", self->wiz[jx]->name); + sprintf(bigbuf, _("%s finds that there is nobody left to surrender to!\n"), self->wiz[jx]->name); PrintMsg(bigbuf); return jx; } if (numdead) - PrintMsg("The survivors have all surrendered to each other!\n"); + PrintMsg(_("The survivors have all surrendered to each other!\n")); else - PrintMsg("Everyone has surrendered to each other!\n"); + PrintMsg(_("Everyone has surrendered to each other!\n")); return MAXPLAYERS; } } --- spellcast-1.0.orig/execute.c +++ spellcast-1.0/execute.c @@ -4,6 +4,10 @@ #include "handwave.h" #include "internal.h" +#include +#define _(String) gettext (String) +#define _(String) gettext (String) + char exbuf[2048], exbuf2[2048], exbuf3[2048]; static char smallbuf[512]; static int summonelq; @@ -104,7 +108,7 @@ perm->fl_blindness = 1; break; default: - printf("ERROR: do not know how to permanent %d.\n", spelnum); + printf(_("ERROR: do not know how to permanent %d.\n"), spelnum); break; } } @@ -115,15 +119,15 @@ { switch (gender) { case Gender_NONE: - return "itself"; + return _("itself"); case Gender_MALE: - return "himself"; + return _("himself"); case Gender_FEMALE: - return "herself"; + return _("herself"); case Gender_NEUTER: - return "hirself"; + return _("hirself"); default: - return "ERROR-himself"; + return _("ERROR-himself"); } } @@ -132,15 +136,15 @@ { switch (gender) { case Gender_NONE: - return "it"; + return _("it"); case Gender_MALE: - return "him"; + return _("him"); case Gender_FEMALE: - return "her"; + return _("her"); case Gender_NEUTER: - return "hir"; + return _("hir"); default: - return "ERROR-him"; + return _("ERROR-him"); } } @@ -149,15 +153,15 @@ { switch (gender) { case Gender_NONE: - return "it"; + return _("it"); case Gender_MALE: - return "he"; + return _("he"); case Gender_FEMALE: - return "she"; + return _("she"); case Gender_NEUTER: - return "ke"; + return _("ke"); default: - return "ERROR-he"; + return _("ERROR-he"); } } @@ -166,15 +170,15 @@ { switch (gender) { case Gender_NONE: - return "its"; + return _("its"); case Gender_MALE: - return "his"; + return _("his"); case Gender_FEMALE: - return "her"; + return _("her"); case Gender_NEUTER: - return "hir"; + return _("hir"); default: - return "ERROR-his"; + return _("ERROR-his"); } } @@ -185,29 +189,29 @@ switch (num) { case 0: - return "zero"; + return _("zero"); case 1: - return "one"; + return _("one"); case 2: - return "two"; + return _("two"); case 3: - return "three"; + return _("three"); case 4: - return "four"; + return _("four"); case 5: - return "five"; + return _("five"); case 6: - return "six"; + return _("six"); case 7: - return "seven"; + return _("seven"); case 8: - return "eight"; + return _("eight"); case 9: - return "nine"; + return _("nine"); case 10: - return "ten"; + return _("ten"); default: - sprintf(buf, "%d", num); + sprintf(buf, _("%d"), num); return buf; } } @@ -228,10 +232,10 @@ strcat(buf, ", "); any = 1; if (zapl[spel]==1) { - strcat(buf, spelllist[spel].name); + strcat(buf, _(spelllist[spel].name)); } else { - sprintf(smallbuf, "%s %s", number_name(zapl[spel]), spelllist[spel].name); + sprintf(smallbuf, _("%s %s"), number_name(zapl[spel]), _(spelllist[spel].name)); strcat(buf, smallbuf); } } @@ -249,9 +253,9 @@ if ((union being *)mcaster != mtarget && (mtarget->both.invisibility || mcaster->blindness)) { - sprintf(exbuf, "You are unable to see %s; your %s goes wild.\n", mtarget->both.name, spelllist[ctmp->spellnum].name); - sprintf(exbuf2, "%s is unable to see you; %s %s goes wild.\n", mcaster->name, pro_his(mcaster->gender), spelllist[ctmp->spellnum].name); - sprintf(exbuf3, "%s is unable to see %s; %s %s goes wild.\n", mcaster->name, mtarget->both.name, pro_his(mcaster->gender), spelllist[ctmp->spellnum].name); + sprintf(exbuf, _("You are unable to see %s; your %s goes wild.\n"), mtarget->both.name, _(spelllist[ctmp->spellnum].name)); + sprintf(exbuf2, _("%s is unable to see you; %s %s goes wild.\n"), mcaster->name, pro_his(mcaster->gender), _(spelllist[ctmp->spellnum].name)); + sprintf(exbuf3, _("%s is unable to see %s; %s %s goes wild.\n"), mcaster->name, mtarget->both.name, pro_his(mcaster->gender), _(spelllist[ctmp->spellnum].name)); if (ctmp->targettype==QuVal_Target_Wizard) PrintMsg3(ctmp->caster, ctmp->target, exbuf, exbuf2, exbuf3); else @@ -274,34 +278,34 @@ char *handage; switch (ctmp->handage) { case MASK_LEFT: - handage = "with the left hand"; + handage = _("with the left hand"); break; case MASK_RIGHT: - handage = "with the right hand"; + handage = _("with the right hand"); break; case MASK_TWOHAND: - handage = "with both hands"; + handage = _("with both hands"); break; case 0: - handage = "from a Delayed Effect"; + handage = _("from a Delayed Effect"); break; case MASK_LEFT|MASK_RIGHT: - handage = "ERROR:BOTH??? hands"; + handage = _("ERROR:BOTH??? hands"); break; default: - handage = "ERROR:NEITHER??? hand"; + handage = _("ERROR:NEITHER??? hand"); break; } switch (ctmp->targettype) { case -1: - strcpy(smallbuf, "over the arena"); + strcpy(smallbuf, _("over the arena")); break; case 0: - strcpy(smallbuf, "up into the air"); + strcpy(smallbuf, _("up into the air")); break; default: if (ctmp->targettype==QuVal_Target_Wizard && ctmp->target==ctmp->caster) { - strcpy(smallbuf, "at "); + strcpy(smallbuf, _("at ")); strcat(smallbuf, pro_himself(self->wiz[ctmp->caster]->gender)); } else { @@ -316,14 +320,14 @@ mtarget = NULL; break; } - sprintf(smallbuf, "at %s", mtarget->both.name); + sprintf(smallbuf, _("at %s"), mtarget->both.name); } break; } if (ctmp->spellnum == SP__STAB) - sprintf(exbuf, "%s stabs (%s) %s.\n", self->wiz[ctmp->caster]->name, handage, smallbuf); + sprintf(exbuf, _("%s stabs (%s) %s.\n"), self->wiz[ctmp->caster]->name, handage, smallbuf); else - sprintf(exbuf, "%s casts %s%s (%s) %s.\n", self->wiz[ctmp->caster]->name, ((ctmp->permanent)?"Permanent ":""), spelllist[ctmp->spellnum].name, handage, smallbuf); + sprintf(exbuf, _("%s casts %s%s (%s) %s.\n"), self->wiz[ctmp->caster]->name, ((ctmp->permanent)?_("Permanent "):""), _(spelllist[ctmp->spellnum].name), handage, smallbuf); PrintMsg(exbuf); } @@ -375,7 +379,7 @@ } if (self->fl_dispelmagic) - PrintMsg("The magical energies in the arena fade away.\n"); + PrintMsg(_("The magical energies in the arena fade away.\n")); /* EXECUTE DISPEL MAGIC, MAGIC MIRROR, COUNTER_SPELL : all beings and corpses. This sets the zapl[] for those spells. */ for (ix=0; ixnumplayers; ix++) { @@ -424,7 +428,7 @@ /* check for dispel magic */ if (self->fl_dispelmagic) { - sprintf(exbuf, "The %s is dispelled.\n", spelllist[ctmp->spellnum].name); + sprintf(exbuf, _("The %s is dispelled.\n"), _(spelllist[ctmp->spellnum].name)); PrintMsg(exbuf); break; } @@ -441,8 +445,8 @@ /* check for counterspell */ if (mtarget->both.zaplist[SP__COUNTER_SPELL]) { - sprintf(exbuf, "The %s is destroyed by your Counter-Spell.\n", spelllist[ctmp->spellnum].name); - sprintf(exbuf2, "The %s is destroyed by the Counter-Spell around %s.\n", spelllist[ctmp->spellnum].name, mtarget->both.name); + sprintf(exbuf, _("The %s is destroyed by your Counter-Spell.\n"), _(spelllist[ctmp->spellnum].name)); + sprintf(exbuf2, _("The %s is destroyed by the Counter-Spell around %s.\n"), _(spelllist[ctmp->spellnum].name), mtarget->both.name); if (ctmp->targettype==QuVal_Target_Wizard) PrintMsg2(ctmp->target, exbuf, exbuf2); else @@ -492,15 +496,15 @@ ctmp->spellnum = SP__LIGHTNING_BOLT; } else { - sprintf(exbuf2, "%s's Lightning Bolt fizzles.\n", mcaster->name); - PrintMsg2(ctmp->caster, "Since you have already cast Lightning Bolt with that formulation, the spell fizzles.\n", exbuf2); + sprintf(exbuf2, _("%s's Lightning Bolt fizzles.\n"), mcaster->name); + PrintMsg2(ctmp->caster, _("Since you have already cast Lightning Bolt with that formulation, the spell fizzles.\n"), exbuf2); break; } } /* check for dispel magic */ if (self->fl_dispelmagic) { - sprintf(exbuf, "The %s is dispelled.\n", spelllist[ctmp->spellnum].name); + sprintf(exbuf, _("The %s is dispelled.\n"), _(spelllist[ctmp->spellnum].name)); PrintMsg(exbuf); break; } @@ -518,8 +522,8 @@ /* check for counterspell */ if (ctmp->spellnum != SP__FINGER_OF_DEATH) { if (mtarget->both.zaplist[SP__COUNTER_SPELL]) { - sprintf(exbuf, "The %s is destroyed by your Counter-Spell.\n", spelllist[ctmp->spellnum].name); - sprintf(exbuf2, "The %s is destroyed by the Counter-Spell around %s.\n", spelllist[ctmp->spellnum].name, mtarget->both.name); + sprintf(exbuf, _("The %s is destroyed by your Counter-Spell.\n"), _(spelllist[ctmp->spellnum].name)); + sprintf(exbuf2, _("The %s is destroyed by the Counter-Spell around %s.\n"), _(spelllist[ctmp->spellnum].name), mtarget->both.name); if (ctmp->targettype==QuVal_Target_Wizard) PrintMsg2(ctmp->target, exbuf, exbuf2); else @@ -536,9 +540,9 @@ /* check to see if caster has mirror too */ if (mcaster->zaplist[SP__MAGIC_MIRROR]) { - sprintf(exbuf, "Your %s is reflected back and forth between %s's Magic Mirror and your own! It rapidly decays and dissipates.\n", spelllist[ctmp->spellnum].name, mtarget->both.name); - sprintf(exbuf2, "%s's %s is reflected back and forth between your Magic Mirror and %s own! It rapidly decays and dissipates.\n", mcaster->name, spelllist[ctmp->spellnum].name, pro_his(mcaster->gender)); - sprintf(exbuf3, "%s's %s is reflected back and forth between %s's Magic Mirror and %s own! It rapidly decays and dissipates.\n", mcaster->name, spelllist[ctmp->spellnum].name, mtarget->both.name, pro_his(mcaster->gender)); + sprintf(exbuf, _("Your %s is reflected back and forth between %s's Magic Mirror and your own! It rapidly decays and dissipates.\n"), _(spelllist[ctmp->spellnum].name), mtarget->both.name); + sprintf(exbuf2, _("%s's %s is reflected back and forth between your Magic Mirror and %s own! It rapidly decays and dissipates.\n"), mcaster->name, _(spelllist[ctmp->spellnum].name), pro_his(mcaster->gender)); + sprintf(exbuf3, _("%s's %s is reflected back and forth between %s's Magic Mirror and %s own! It rapidly decays and dissipates.\n"), mcaster->name, _(spelllist[ctmp->spellnum].name), mtarget->both.name, pro_his(mcaster->gender)); if (ctmp->targettype==QuVal_Target_Wizard) PrintMsg3(ctmp->caster, ctmp->target, exbuf, exbuf2, exbuf3); else @@ -546,9 +550,9 @@ break; /* spell is lost */ } - sprintf(exbuf, "Your %s is reflected from %s's Magic Mirror back at you.\n", spelllist[ctmp->spellnum].name, mtarget->both.name); - sprintf(exbuf2, "%s's %s reflects from your Magic Mirror back at %s.\n", mcaster->name, spelllist[ctmp->spellnum].name, pro_him(mcaster->gender)); - sprintf(exbuf3, "%s's %s reflects from %s's Magic Mirror back at %s.\n", mcaster->name, spelllist[ctmp->spellnum].name, mtarget->both.name, pro_him(mcaster->gender)); + sprintf(exbuf, _("Your %s is reflected from %s's Magic Mirror back at you.\n"), _(spelllist[ctmp->spellnum].name), mtarget->both.name); + sprintf(exbuf2, _("%s's %s reflects from your Magic Mirror back at %s.\n"), mcaster->name, _(spelllist[ctmp->spellnum].name), pro_him(mcaster->gender)); + sprintf(exbuf3, _("%s's %s reflects from %s's Magic Mirror back at %s.\n"), mcaster->name, _(spelllist[ctmp->spellnum].name), mtarget->both.name, pro_him(mcaster->gender)); if (ctmp->targettype==QuVal_Target_Wizard) PrintMsg3(ctmp->caster, ctmp->target, exbuf, exbuf2, exbuf3); else @@ -564,8 +568,8 @@ /* now, check AGAIN for counterspell */ if (ctmp->spellnum != SP__FINGER_OF_DEATH) { if (mcaster->zaplist[SP__COUNTER_SPELL]) { - sprintf(exbuf, "The reflected %s is destroyed by your Counter-Spell.\n", spelllist[ctmp->spellnum].name); - sprintf(exbuf2, "The reflected %s is destroyed by the Counter-Spell around %s.\n", spelllist[ctmp->spellnum].name, mcaster->name); + sprintf(exbuf, _("The reflected %s is destroyed by your Counter-Spell.\n"), _(spelllist[ctmp->spellnum].name)); + sprintf(exbuf2, _("The reflected %s is destroyed by the Counter-Spell around %s.\n"), _(spelllist[ctmp->spellnum].name), mcaster->name); if (ctmp->targettype==QuVal_Target_Wizard) PrintMsg2(ctmp->target, exbuf, exbuf2); else @@ -584,7 +588,7 @@ /* area-effect spell; mtarget is NULL */ /* check for dispel magic */ if (self->fl_dispelmagic) { - sprintf(exbuf, "The %s is dispelled.\n", spelllist[ctmp->spellnum].name); + sprintf(exbuf, _("The %s is dispelled.\n"), _(spelllist[ctmp->spellnum].name)); PrintMsg(exbuf); break; } @@ -594,7 +598,7 @@ /* area-effect spell; mtarget is NULL */ /* check for dispel magic */ if (self->fl_dispelmagic) { - sprintf(exbuf, "The %s is dispelled.\n", spelllist[ctmp->spellnum].name); + sprintf(exbuf, _("The %s is dispelled.\n"), _(spelllist[ctmp->spellnum].name)); PrintMsg(exbuf); break; } @@ -602,7 +606,7 @@ break; case SP__SURRENDER: - PrintMsg("ERROR: Surrender got through to spell table setup\n"); + PrintMsg(_("ERROR: Surrender got through to spell table setup\n")); break; case SP__COUNTER_SPELL: @@ -613,7 +617,7 @@ break; default: - PrintMsg("ERROR: Unknown spell in spell table setup\n"); + PrintMsg(_("ERROR: Unknown spell in spell table setup\n")); break; } } @@ -704,24 +708,24 @@ /*{ for (jx=0; jxboth.name); + printf(_(" : %s\n"), fred->both.name); }*/ if (self->fl_dispelmagic) { /* dispel magic in effect: neutralize counter_spells and magic mirrors */ if (zapl[SP__COUNTER_SPELL]) { zapl[SP__COUNTER_SPELL] = 0; - sprintf(exbuf, "The Counter-Spell on %s is dispelled.\n", fred->both.name); + sprintf(exbuf, _("The Counter-Spell on %s is dispelled.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The Counter-Spell on you is dispelled.\n", exbuf); + PrintMsg2(cnum, _("The Counter-Spell on you is dispelled.\n"), exbuf); else PrintMsg(exbuf); } if (zapl[SP__MAGIC_MIRROR]) { zapl[SP__MAGIC_MIRROR] = 0; - sprintf(exbuf, "The Magic Mirror on %s is dispelled.\n", fred->both.name); + sprintf(exbuf, _("The Magic Mirror on %s is dispelled.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The Magic Mirror on you is dispelled.\n", exbuf); + PrintMsg2(cnum, _("The Magic Mirror on you is dispelled.\n"), exbuf); else PrintMsg(exbuf); } @@ -729,13 +733,13 @@ if (!wizflag) { struct creature *cre = (struct creature *)fred; if (cre->alive) { - sprintf(exbuf, "The Dispel Magic starts to tear %s apart.\n", cre->name); + sprintf(exbuf, _("The Dispel Magic starts to tear %s apart.\n"), cre->name); PrintMsg(exbuf); cre->hitpoints = (-100); cre->nocorpse = 1; } else if (!cre->nocorpse) { - sprintf(exbuf, "The corpse of %s disintegrates, destroyed by the Dispel Magic.\n", cre->name); + sprintf(exbuf, _("The corpse of %s disintegrates, destroyed by the Dispel Magic.\n"), cre->name); PrintMsg(exbuf); cre->nocorpse = 1; } @@ -746,18 +750,18 @@ if (zapl[SP__COUNTER_SPELL]) { zapl[SP__SHIELD]++; /* auto-shield */ - sprintf(exbuf, "A Counter-Spell flares around %s.\n", fred->both.name); + sprintf(exbuf, _("A Counter-Spell flares around %s.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "Your magical senses go numb as a Counter-Spell surrounds you.\n", exbuf); + PrintMsg2(cnum, _("Your magical senses go numb as a Counter-Spell surrounds you.\n"), exbuf); else PrintMsg(exbuf); if (zapl[SP__MAGIC_MIRROR]) { /* counterspell beats mirror */ zapl[SP__MAGIC_MIRROR] = 0; - sprintf(exbuf, "The Magic Mirror on %s is destroyed by the Counter-Spell.\n", fred->both.name); + sprintf(exbuf, _("The Magic Mirror on %s is destroyed by the Counter-Spell.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The Magic Mirror on you is destroyed by the Counter-Spell.\n", exbuf); + PrintMsg2(cnum, _("The Magic Mirror on you is destroyed by the Counter-Spell.\n"), exbuf); else PrintMsg(exbuf); } @@ -766,9 +770,9 @@ if (zapl[SP__MAGIC_MIRROR]) { - sprintf(exbuf, "A Magic Mirror swirls around %s.\n", fred->both.name); + sprintf(exbuf, _("A Magic Mirror swirls around %s.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The bright haze of a Magic Mirror surrounds you.\n", exbuf); + PrintMsg2(cnum, _("The bright haze of a Magic Mirror surrounds you.\n"), exbuf); else PrintMsg(exbuf); @@ -787,22 +791,23 @@ char *elm; /* counterspell, dispel magic, magic mirror have already been taken care of. */ static int summonspells[4] = {SP__SUMMON_GOBLIN, SP__SUMMON_OGRE, SP__SUMMON_TROLL, SP__SUMMON_GIANT}; + /* have to put this into startup initialization */ static char *summonnames[4] = {"Goblin", "Ogre", "Troll", "Giant"}; for (ix=0; ix<4; ix++) { spelnum = summonspells[ix]; if (zapl[spelnum]) { if (zapl[spelnum]==1) { - sprintf(exbuf, "Your %s materializes by your side.\n", summonnames[ix]); - sprintf(exbuf2, "%s's %s appears by %s side.\n", fred->both.name, summonnames[ix], pro_his(fred->both.gender)); + sprintf(exbuf, _("Your %s materializes by your side.\n"), summonnames[ix]); + sprintf(exbuf2, _("%s's %s appears by %s side.\n"), fred->both.name, summonnames[ix], pro_his(fred->both.gender)); if (wizflag) PrintMsg2(cnum, exbuf, exbuf2); else PrintMsg(exbuf2); } else { - sprintf(exbuf, "Your %s %ss materialize by your side.\n", number_name(zapl[spelnum]), summonnames[ix]); - sprintf(exbuf2, "%s's %s %ss appear by %s side.\n", fred->both.name, number_name(zapl[spelnum]), summonnames[ix], pro_his(fred->both.gender)); + sprintf(exbuf, _("Your %s %ss materialize by your side.\n"), number_name(zapl[spelnum]), summonnames[ix]); + sprintf(exbuf2, _("%s's %s %ss appear by %s side.\n"), fred->both.name, number_name(zapl[spelnum]), summonnames[ix], pro_his(fred->both.gender)); if (wizflag) PrintMsg2(cnum, exbuf, exbuf2); else @@ -817,12 +822,12 @@ ix = self->querylist[summonelq].answer; /* 0 fire, 1 ice */ summonelq++; if (!ix) { - sprintf(exbuf, "A blazing Fire Elemental materializes above you.\n"); - sprintf(exbuf2, "A blazing Fire Elemental materializes above %s.\n", fred->both.name); + sprintf(exbuf, _("A blazing Fire Elemental materializes above you.\n")); + sprintf(exbuf2, _("A blazing Fire Elemental materializes above %s.\n"), fred->both.name); } else { - sprintf(exbuf, "A glittering Ice Elemental materializes above you.\n"); - sprintf(exbuf2, "A glittering Ice Elemental materializes above %s.\n", fred->both.name); + sprintf(exbuf, _("A glittering Ice Elemental materializes above you.\n")); + sprintf(exbuf2, _("A glittering Ice Elemental materializes above %s.\n"), fred->both.name); } if (wizflag) PrintMsg2(cnum, exbuf, exbuf2); @@ -869,11 +874,11 @@ } } if (num_fire>1) { - sprintf(exbuf, "The %s Fire Elementals merge into single raging form.\n", number_name(num_fire)); + sprintf(exbuf, _("The %s Fire Elementals merge into single raging form.\n"), number_name(num_fire)); PrintMsg(exbuf); } if (num_ice>1) { - sprintf(exbuf, "The %s Ice Elementals merge into single whirling form.\n", number_name(num_ice)); + sprintf(exbuf, _("The %s Ice Elementals merge into single whirling form.\n"), number_name(num_ice)); PrintMsg(exbuf); } @@ -884,55 +889,55 @@ switch (ix) { case 5: /* 0101 */ - PrintMsg("The Fire Elemental is dispersed into the Fire Storm.\n"); + PrintMsg(_("The Fire Elemental is dispersed into the Fire Storm.\n")); self->cre[firel].nocorpse = 1; self->cre[firel].alive = 0; break; case 10: /* 1010 */ - PrintMsg("The Ice Elemental is dispersed into the Ice Storm.\n"); + PrintMsg(_("The Ice Elemental is dispersed into the Ice Storm.\n")); self->cre[icel].nocorpse = 1; self->cre[icel].alive = 0; break; case 12: /* 1100 */ - PrintMsg("The Fire and Ice Storms tear each other into shreds of vapor.\n"); + PrintMsg(_("The Fire and Ice Storms tear each other into shreds of vapor.\n")); self->fl_firestorm = 0; self->fl_icestorm = 0; break; case 3: /* 0011 */ - PrintMsg("The Fire and Ice Elementals tear into each other, and whirl into a column of steam that dissipates in moments.\n"); + PrintMsg(_("The Fire and Ice Elementals tear into each other, and whirl into a column of steam that dissipates in moments.\n")); self->cre[firel].nocorpse = 1; self->cre[firel].alive = 0; self->cre[icel].nocorpse = 1; self->cre[icel].alive = 0; break; case 6: /* 0110 */ - PrintMsg("The Ice Elemental is dispersed into the Fire Storm, destroying both.\n"); + PrintMsg(_("The Ice Elemental is dispersed into the Fire Storm, destroying both.\n")); self->cre[icel].nocorpse = 1; self->cre[icel].alive = 0; self->fl_firestorm = 0; break; case 9: /* 1001 */ - PrintMsg("The Fire Elemental is dispersed into the Ice Storm, destroying both.\n"); + PrintMsg(_("The Fire Elemental is dispersed into the Ice Storm, destroying both.\n")); self->cre[firel].nocorpse = 1; self->cre[firel].alive = 0; self->fl_icestorm = 0; break; case 13: /* 1101 */ - PrintMsg("The Fire and Ice Storms tear each other into shreds of vapor, destroying the Fire Elemental as well.\n"); + PrintMsg(_("The Fire and Ice Storms tear each other into shreds of vapor, destroying the Fire Elemental as well.\n")); self->cre[firel].nocorpse = 1; self->cre[firel].alive = 0; self->fl_firestorm = 0; self->fl_icestorm = 0; break; case 14: /* 1110 */ - PrintMsg("The Fire and Ice Storms tear each other into shreds of vapor, destroying the Ice Elemental as well.\n"); + PrintMsg(_("The Fire and Ice Storms tear each other into shreds of vapor, destroying the Ice Elemental as well.\n")); self->cre[icel].nocorpse = 1; self->cre[icel].alive = 0; self->fl_firestorm = 0; self->fl_icestorm = 0; break; case 11: /* 1011 */ - PrintMsg("The Fire and Ice Elementals tear into each other, and whirl into a column of steam that dissipates in moments. The Ice Storm is absorbed as well.\n"); + PrintMsg(_("The Fire and Ice Elementals tear into each other, and whirl into a column of steam that dissipates in moments. The Ice Storm is absorbed as well.\n")); self->cre[firel].nocorpse = 1; self->cre[firel].alive = 0; self->cre[icel].nocorpse = 1; @@ -940,7 +945,7 @@ self->fl_icestorm = 0; break; case 7: /* 0111 */ - PrintMsg("The Fire and Ice Elementals tear into each other, and whirl into a column of steam that dissipates in moments. The Fire Storm is absorbed as well.\n"); + PrintMsg(_("The Fire and Ice Elementals tear into each other, and whirl into a column of steam that dissipates in moments. The Fire Storm is absorbed as well.\n")); self->cre[firel].nocorpse = 1; self->cre[firel].alive = 0; self->cre[icel].nocorpse = 1; @@ -948,7 +953,7 @@ self->fl_firestorm = 0; break; case 15: /* 1111 */ - PrintMsg("The Fire and Ice Elementals whirl into each other, screaming in fury, and the Fire and Ice storms shriek in response. The column of Elemental energy rises to meet the cloud of vapor that descends over the arena. You are buffeted by the conflicting energies; but within moments, nothing remains.\n"); + PrintMsg(_("The Fire and Ice Elementals whirl into each other, screaming in fury, and the Fire and Ice storms shriek in response. The column of Elemental energy rises to meet the cloud of vapor that descends over the arena. You are buffeted by the conflicting energies; but within moments, nothing remains.\n")); self->cre[firel].nocorpse = 1; self->cre[firel].alive = 0; self->cre[icel].nocorpse = 1; @@ -965,30 +970,30 @@ if (self->cre[ix].type==Creature_FIREL) { if (!nukit && zapl[SP__RESIST_HEAT]) { - sprintf(exbuf, "%s gutters and flickers out under the influence of the Resist Heat.\n", self->cre[ix].name); + sprintf(exbuf, _("%s gutters and flickers out under the influence of the Resist Heat.\n"), self->cre[ix].name); PrintMsg(exbuf); nukit = 1; } } if (self->cre[ix].type==Creature_ICEL) { if (!nukit && zapl[SP__RESIST_COLD]) { - sprintf(exbuf, "%s melts away under the influence of the Resist Cold.\n", self->cre[ix].name); + sprintf(exbuf, _("%s melts away under the influence of the Resist Cold.\n"), self->cre[ix].name); PrintMsg(exbuf); nukit = 1; } if (!nukit && zapl[SP__FIREBALL]) { - sprintf(exbuf, "%s is vaporized by the Fireball.\n", self->cre[ix].name); + sprintf(exbuf, _("%s is vaporized by the Fireball.\n"), self->cre[ix].name); PrintMsg(exbuf); nukit = 1; } } if (!nukit && zapl[SP__BLINDNESS]) { - sprintf(exbuf, "Under the stress of the Blindness, %s shivers and disintegrates into random energies.\n", self->cre[ix].name); + sprintf(exbuf, _("Under the stress of the Blindness, %s shivers and disintegrates into random energies.\n"), self->cre[ix].name); PrintMsg(exbuf); nukit = 1; } if (!nukit && zapl[SP__INVISIBILITY]) { - sprintf(exbuf, "Under the stress of the Invisibility, %s shivers and disintegrates into random energies.\n", self->cre[ix].name); + sprintf(exbuf, _("Under the stress of the Invisibility, %s shivers and disintegrates into random energies.\n"), self->cre[ix].name); PrintMsg(exbuf); nukit = 1; } @@ -1000,7 +1005,7 @@ /* dispel magic was taken care of earlier */ if (self->cre[ix].alive && zapl[SP__REMOVE_ENCHANTMENT]) { - sprintf(exbuf, "The Remove Enchantment starts to tear %s apart.\n", self->cre[ix].name); + sprintf(exbuf, _("The Remove Enchantment starts to tear %s apart.\n"), self->cre[ix].name); PrintMsg(exbuf); self->cre[ix].hitpoints = (-100); self->cre[ix].nocorpse = 1; @@ -1020,9 +1025,9 @@ /* counterspell, dispel magic, magic mirror have already been taken care of. */ if (zapl[SP__RAISE_DEAD] && zapl[SP__FINGER_OF_DEATH]) { - sprintf(exbuf2, "The Finger of Death and Raise Dead spells aimed at %s cancel each other.\n", fred->both.name); + sprintf(exbuf2, _("The Finger of Death and Raise Dead spells aimed at %s cancel each other.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "For a moment, you feel a sudden pressure in your chest, as if an iron band was squeezing your heart. Then it fades, as the Raise Dead spell burns through you.\n", exbuf2); + PrintMsg2(cnum, _("For a moment, you feel a sudden pressure in your chest, as if an iron band was squeezing your heart. Then it fades, as the Raise Dead spell burns through you.\n"), exbuf2); else PrintMsg(exbuf2); zapl[SP__RAISE_DEAD]=0; @@ -1030,9 +1035,9 @@ } if (zapl[SP__FIREBALL] && self->fl_icestorm) { - sprintf(exbuf2, "The Fireball hurtling towards %s is snuffed by the Ice Storm, leaving %s enveloped in a cloud of steam.\n", fred->both.name, pro_him(fred->both.gender)); + sprintf(exbuf2, _("The Fireball hurtling towards %s is snuffed by the Ice Storm, leaving %s enveloped in a cloud of steam.\n"), fred->both.name, pro_him(fred->both.gender)); if (wizflag) - PrintMsg2(cnum, "The Fireball hurtling towards you is snuffed by the Ice Storm, leaving you enveloped in warm steam.\n", exbuf2); + PrintMsg2(cnum, _("The Fireball hurtling towards you is snuffed by the Ice Storm, leaving you enveloped in warm steam.\n"), exbuf2); else PrintMsg(exbuf2); zapl[SP__FIREBALL]=0; @@ -1053,8 +1058,8 @@ /* all mind spells cancel. */ list_mind_spells(exbuf3, zapl); - sprintf(exbuf, "The mind-control spells (%s) aimed at you interfere with each other and fizzle, leaving you with a pounding headache.\n", exbuf3); - sprintf(exbuf2, "The mind-control spells (%s) aimed at %s interfere with each other and fizzle.\n", exbuf3, fred->both.name); + sprintf(exbuf, _("The mind-control spells (%s) aimed at you interfere with each other and fizzle, leaving you with a pounding headache.\n"), exbuf3); + sprintf(exbuf2, _("The mind-control spells (%s) aimed at %s interfere with each other and fizzle.\n"), exbuf3, fred->both.name); if (wizflag) PrintMsg2(cnum, exbuf, exbuf2); else @@ -1085,17 +1090,17 @@ /* don't bother checking permanency -- it doesn't change anything */ if (zapl[SP__RESIST_HEAT]) { if (!fred->both.resistant_heat) { - sprintf(exbuf2, "The Resist Heat shrouds %s in a cool blue veil.\n", fred->both.name); + sprintf(exbuf2, _("The Resist Heat shrouds %s in a cool blue veil.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The Resist Heat wraps you in a pleasant blue coolness.\n", exbuf2); + PrintMsg2(cnum, _("The Resist Heat wraps you in a pleasant blue coolness.\n"), exbuf2); else PrintMsg(exbuf2); fred->both.resistant_heat = 1; } else { - sprintf(exbuf2, "%s's veil of Resist Heat continues to glow coolly.\n", fred->both.name); + sprintf(exbuf2, _("%s's veil of Resist Heat continues to glow coolly.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "Your veil of Resist Heat continues to glow coolly.\n", exbuf2); + PrintMsg2(cnum, _("Your veil of Resist Heat continues to glow coolly.\n"), exbuf2); else PrintMsg(exbuf2); } @@ -1104,17 +1109,17 @@ /* don't bother checking permanency -- it doesn't change anything */ if (zapl[SP__RESIST_COLD]) { if (!fred->both.resistant_cold) { - sprintf(exbuf2, "The Resist Cold shrouds %s in a warm pink veil.\n", fred->both.name); + sprintf(exbuf2, _("The Resist Cold shrouds %s in a warm pink veil.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The Resist Cold wraps you in a pleasant pink warmth.\n", exbuf2); + PrintMsg2(cnum, _("The Resist Cold wraps you in a pleasant pink warmth.\n"), exbuf2); else PrintMsg(exbuf2); fred->both.resistant_cold = 1; } else { - sprintf(exbuf2, "%s's veil of Resist Cold continues to glow warmly.\n", fred->both.name); + sprintf(exbuf2, _("%s's veil of Resist Cold continues to glow warmly.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "Your veil of Resist Cold continues to glow warmly.\n", exbuf2); + PrintMsg2(cnum, _("Your veil of Resist Cold continues to glow warmly.\n"), exbuf2); else PrintMsg(exbuf2); } @@ -1122,16 +1127,16 @@ if (zapl[SP__PROTECTION_FROM_EVIL] || perm->fl_prot_evil) { if (!fred->both.prot_from_evil) { - sprintf(exbuf, "A white circle of Protection from Evil springs up around you. You feel the Shield aura cloaking your skin.\n"); - sprintf(exbuf2, "A white circle of Protection from Evil springs up around %s.\n", fred->both.name); + sprintf(exbuf, _("A white circle of Protection from Evil springs up around you. You feel the Shield aura cloaking your skin.\n")); + sprintf(exbuf2, _("A white circle of Protection from Evil springs up around %s.\n"), fred->both.name); if (wizflag) PrintMsg2(cnum, exbuf, exbuf2); else PrintMsg(exbuf2); } else { - sprintf(exbuf, "Your circle of Protection from Evil flares back to full strength.\n"); - sprintf(exbuf2, "%s's circle of Protection from Evil flares back to full strength.\n", fred->both.name); + sprintf(exbuf, _("Your circle of Protection from Evil flares back to full strength.\n")); + sprintf(exbuf2, _("%s's circle of Protection from Evil flares back to full strength.\n"), fred->both.name); if (wizflag) PrintMsg2(cnum, exbuf, exbuf2); else @@ -1150,20 +1155,20 @@ case 4: default: doit = 0; - /*sprintf(exbuf, "Your circle of Protection from Evil is still glowing strongly.\n"); - sprintf(exbuf2, "%s's circle of Protection from Evil is still glowing strongly.\n", fred->both.name);*/ + /*sprintf(exbuf, _("Your circle of Protection from Evil is still glowing strongly.\n")); + sprintf(exbuf2, _("%s's circle of Protection from Evil is still glowing strongly.\n"), fred->both.name);*/ break; case 3: - sprintf(exbuf, "Your circle of Protection from Evil is beginning to fade.\n"); - sprintf(exbuf2, "%s's circle of Protection from Evil is beginning to fade.\n", fred->both.name); + sprintf(exbuf, _("Your circle of Protection from Evil is beginning to fade.\n")); + sprintf(exbuf2, _("%s's circle of Protection from Evil is beginning to fade.\n"), fred->both.name); break; case 2: - sprintf(exbuf, "Your circle of Protection from Evil is dimmer now.\n"); - sprintf(exbuf2, "%s's circle of Protection from Evil is dimmer now.\n", fred->both.name); + sprintf(exbuf, _("Your circle of Protection from Evil is dimmer now.\n")); + sprintf(exbuf2, _("%s's circle of Protection from Evil is dimmer now.\n"), fred->both.name); break; case 1: - sprintf(exbuf, "Your circle of Protection from Evil is nearly gone.\n"); - sprintf(exbuf2, "%s's circle of Protection from Evil is nearly gone.\n", fred->both.name); + sprintf(exbuf, _("Your circle of Protection from Evil is nearly gone.\n")); + sprintf(exbuf2, _("%s's circle of Protection from Evil is nearly gone.\n"), fred->both.name); break; } if (doit) --- spellcast-1.0.orig/execute2.c +++ spellcast-1.0/execute2.c @@ -4,6 +4,9 @@ #include "handwave.h" #include "internal.h" +#include +#define _(String) gettext (String) + extern char exbuf[2048], exbuf2[2048]; extern char *number_name(); @@ -23,9 +26,9 @@ /* fred->both.mind_caster = unused */ if (fred->both.enchant_ppend) perm->mind_spell = SP__AMNESIA; - sprintf(exbuf2, "The Amnesia spell curls around %s's mind.\n", fred->both.name); + sprintf(exbuf2, _("The Amnesia spell curls around %s's mind.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The Amnesia spell curls around your mind.\n", exbuf2); + PrintMsg2(cnum, _("The Amnesia spell curls around your mind.\n"), exbuf2); else PrintMsg(exbuf2); } @@ -38,9 +41,9 @@ perm->mind_detail = (-1); fred->both.mind_caster = 1; } - sprintf(exbuf2, "The Confusion spell curls around %s's mind.\n", fred->both.name); + sprintf(exbuf2, _("The Confusion spell curls around %s's mind.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The Confusion spell curls around your mind.\n", exbuf2); + PrintMsg2(cnum, _("The Confusion spell curls around your mind.\n"), exbuf2); else PrintMsg(exbuf2); } @@ -50,9 +53,9 @@ /* fred->both.mind_caster = unused */ if (fred->both.enchant_ppend) perm->mind_spell = SP__FEAR; - sprintf(exbuf2, "The Fear spell curls around %s's mind.\n", fred->both.name); + sprintf(exbuf2, _("The Fear spell curls around %s's mind.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The Fear spell curls around your mind.\n", exbuf2); + PrintMsg2(cnum, _("The Fear spell curls around your mind.\n"), exbuf2); else PrintMsg(exbuf2); } @@ -61,8 +64,8 @@ if (wizflag) { /* cast on a wizard */ if (fred->both.enchant_caster == (-1)) { - sprintf(exbuf2, "Not knowing which of %s's hands to strike, the Paralysis spell fizzles.\n", fred->both.name); - PrintMsg2(cnum, "Not knowing which of your hands to strike, the Paralysis spell fizzles.\n", exbuf2); + sprintf(exbuf2, _("Not knowing which of %s's hands to strike, the Paralysis spell fizzles.\n"), fred->both.name); + PrintMsg2(cnum, _("Not knowing which of your hands to strike, the Paralysis spell fizzles.\n"), exbuf2); } else { fred->both.mind_spell = SP__PARALYSIS; @@ -82,8 +85,8 @@ perm->mind_detail = handnum; } - sprintf(exbuf, "The Paralysis spell curls around your %s hand.\n", (handnum?"right":"left")); - sprintf(exbuf2, "The Paralysis spell curls around %s's %s hand.\n", fred->both.name, (handnum?"right":"left")); + sprintf(exbuf, _("The Paralysis spell curls around your %s hand.\n"), (handnum?"right":"left")); + sprintf(exbuf2, _("The Paralysis spell curls around %s's %s hand.\n"), fred->both.name, (handnum?"right":"left")); PrintMsg2(cnum, exbuf, exbuf2); } } @@ -93,7 +96,7 @@ /* fred->both.mind_caster = unused */ if (fred->both.enchant_ppend) perm->mind_spell = SP__PARALYSIS; - sprintf(exbuf2, "The Paralysis spell curls around %s's mind.\n", fred->both.name); + sprintf(exbuf2, _("The Paralysis spell curls around %s's mind.\n"), fred->both.name); PrintMsg(exbuf2); } } @@ -101,13 +104,13 @@ if (zapl[SP__CHARM_MONSTER]) { if (wizflag) { /* cast on a wizard */ - sprintf(exbuf2, "The Charm Monster spell swirls around %s's mind, but cannot sink in.\n", fred->both.name); - PrintMsg2(cnum, "The Charm Monster spell swirls around your mind, but cannot sink in.\n", exbuf2); + sprintf(exbuf2, _("The Charm Monster spell swirls around %s's mind, but cannot sink in.\n"), fred->both.name); + PrintMsg2(cnum, _("The Charm Monster spell swirls around your mind, but cannot sink in.\n"), exbuf2); } else { /* cast on a monster */ if (fred->both.enchant_caster == (-1)) { - sprintf(exbuf, "The Charm Monster spell strikes %s, and then seems to freeze. Referees stomp into the arena and glare at the spell. Then they glare at each other. Then they glare at the spell again. They huddle together, muttering and glowering. Eventually they pick the spell up bodily and carry it off the field.\n", fred->both.name); + sprintf(exbuf, _("The Charm Monster spell strikes %s, and then seems to freeze. Referees stomp into the arena and glare at the spell. Then they glare at each other. Then they glare at the spell again. They huddle together, muttering and glowering. Eventually they pick the spell up bodily and carry it off the field.\n"), fred->both.name); PrintMsg(exbuf); } else { @@ -118,7 +121,7 @@ perm->mind_detail = fred->both.enchant_caster; } fred->cre.owner = fred->both.enchant_caster; - sprintf(exbuf2, "The Charm Monster spell curls around %s, and %s smiles dopily at %s.\n", fred->both.name, pro_he(fred->both.gender), self->wiz[fred->cre.owner]->name); + sprintf(exbuf2, _("The Charm Monster spell curls around %s, and %s smiles dopily at %s.\n"), fred->both.name, pro_he(fred->both.gender), self->wiz[fred->cre.owner]->name); PrintMsg(exbuf2); } } @@ -128,8 +131,8 @@ if (wizflag) { /* cast on a wizard */ if (fred->both.enchant_caster == (-1)) { - sprintf(exbuf2, "Not knowing which of %s's hands to strike, the Charm Person spell fizzles.\n", fred->both.name); - PrintMsg2(cnum, "Not knowing which of your hands to strike, the Charm Person spell fizzles.\n", exbuf2); + sprintf(exbuf2, _("Not knowing which of %s's hands to strike, the Charm Person spell fizzles.\n"), fred->both.name); + PrintMsg2(cnum, _("Not knowing which of your hands to strike, the Charm Person spell fizzles.\n"), exbuf2); } else { fred->both.mind_spell = SP__CHARM_PERSON; @@ -146,14 +149,14 @@ fred->both.mind_caster |= 1024; } - sprintf(exbuf, "The Charm Person spell curls around your %s hand.\n", (handnum?"right":"left")); - sprintf(exbuf2, "The Charm Person spell curls around %s's %s hand.\n", fred->both.name, (handnum?"right":"left")); + sprintf(exbuf, _("The Charm Person spell curls around your %s hand.\n"), (handnum?"right":"left")); + sprintf(exbuf2, _("The Charm Person spell curls around %s's %s hand.\n"), fred->both.name, (handnum?"right":"left")); PrintMsg2(cnum, exbuf, exbuf2); } } else { /* cast on a monster */ - sprintf(exbuf2, "The Charm Person spell swirls around %s's mind, but cannot sink in.\n", fred->both.name); + sprintf(exbuf2, _("The Charm Person spell swirls around %s's mind, but cannot sink in.\n"), fred->both.name); PrintMsg(exbuf2); } } @@ -163,17 +166,17 @@ switch (perm->mind_spell) { case SP__AMNESIA: fred->both.mind_spell = SP__AMNESIA; - sprintf(exbuf2, "%s is still afflicted with Amnesia.\n", fred->both.name); + sprintf(exbuf2, _("%s is still afflicted with Amnesia.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "You are still afflicted with Amnesia.\n", exbuf2); + PrintMsg2(cnum, _("You are still afflicted with Amnesia.\n"), exbuf2); else PrintMsg(exbuf2); break; case SP__FEAR: fred->both.mind_spell = SP__FEAR; - sprintf(exbuf2, "%s is still afflicted with Fear.\n", fred->both.name); + sprintf(exbuf2, _("%s is still afflicted with Fear.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "You are still afflicted with Fear.\n", exbuf2); + PrintMsg2(cnum, _("You are still afflicted with Fear.\n"), exbuf2); else PrintMsg(exbuf2); break; @@ -182,16 +185,16 @@ fred->both.mind_spell = SP__CHARM_MONSTER; fred->both.mind_caster = perm->mind_detail; fred->cre.owner = perm->mind_detail; - sprintf(exbuf2, "%s is still enamoured of %s.\n", fred->both.name, self->wiz[fred->cre.owner]->name); + sprintf(exbuf2, _("%s is still enamoured of %s.\n"), fred->both.name, self->wiz[fred->cre.owner]->name); PrintMsg(exbuf2); } break; case SP__CONFUSION: fred->both.mind_spell = SP__CONFUSION; fred->both.mind_caster = 1; - sprintf(exbuf2, "%s is still afflicted with Confusion.\n", fred->both.name); + sprintf(exbuf2, _("%s is still afflicted with Confusion.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "You are still afflicted with Confusion.\n", exbuf2); + PrintMsg2(cnum, _("You are still afflicted with Confusion.\n"), exbuf2); else PrintMsg(exbuf2); break; @@ -199,20 +202,20 @@ if (wizflag) { fred->both.mind_spell = SP__CHARM_PERSON; fred->both.mind_caster = 1024; - sprintf(exbuf2, "%s is still Charmed.\n", fred->both.name); - PrintMsg2(cnum, "You are still Charmed.\n", exbuf2); + sprintf(exbuf2, _("%s is still Charmed.\n"), fred->both.name); + PrintMsg2(cnum, _("You are still Charmed.\n"), exbuf2); } break; case SP__PARALYSIS: fred->both.mind_spell = SP__PARALYSIS; fred->both.mind_caster = perm->mind_detail; if (wizflag) { - sprintf(exbuf2, "%s's %s hand is still Paralyzed.\n", fred->both.name, ((perm->mind_detail)?"right":"left")); - sprintf(exbuf, "Your %s hand is still Paralyzed.\n", ((perm->mind_detail)?"right":"left")); + sprintf(exbuf2, _("%s's %s hand is still Paralyzed.\n"), fred->both.name, ((perm->mind_detail)?"right":"left")); + sprintf(exbuf, _("Your %s hand is still Paralyzed.\n"), ((perm->mind_detail)?"right":"left")); PrintMsg2(cnum, exbuf, exbuf2); } else { - sprintf(exbuf2, "%s is still afflicted with Paralysis.\n", fred->both.name); + sprintf(exbuf2, _("%s is still afflicted with Paralysis.\n"), fred->both.name); PrintMsg(exbuf2); } break; @@ -220,7 +223,7 @@ /* no permanent mind spell */ break; default: - printf("ERROR: unknown perm->mind_spell %d\n", perm->mind_spell); + printf(_("ERROR: unknown perm->mind_spell %d\n"), perm->mind_spell); break; } } @@ -229,9 +232,9 @@ if (fred->both.disease_time == (-1)) { /* not yet diseased */ fred->both.disease_time = 6; - sprintf(exbuf2, "%s sneezes loudly.\n", fred->both.name); + sprintf(exbuf2, _("%s sneezes loudly.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "You sneeze loudly.\n", exbuf2); + PrintMsg2(cnum, _("You sneeze loudly.\n"), exbuf2); else PrintMsg(exbuf2); } @@ -241,9 +244,9 @@ if (fred->both.poison_time == (-1)) { /* not yet poisoned */ fred->both.poison_time = 6; - sprintf(exbuf2, "%s suddenly looks somewhat pale.\n", fred->both.name); + sprintf(exbuf2, _("%s suddenly looks somewhat pale.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "A flash of pain lances along your bones, and then fades away.\n", exbuf2); + PrintMsg2(cnum, _("A flash of pain lances along your bones, and then fades away.\n"), exbuf2); else PrintMsg(exbuf2); } @@ -252,21 +255,21 @@ if (zapl[SP__ANTI_SPELL]) { if (zapl[SP__REMOVE_ENCHANTMENT]) { /* cancelled */ - sprintf(exbuf2, "The Anti-Spell fizzes away into nothing as it approaches %s.\n", fred->both.name); + sprintf(exbuf2, _("The Anti-Spell fizzes away into nothing as it approaches %s.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The Anti-Spell fizzes away into nothing as it approaches you.\n", exbuf2); + PrintMsg2(cnum, _("The Anti-Spell fizzes away into nothing as it approaches you.\n"), exbuf2); else PrintMsg(exbuf2); } else { if (!wizflag) { - sprintf(exbuf, "The Anti-Spell whizzes through %s without any effect.\n", fred->both.name); + sprintf(exbuf, _("The Anti-Spell whizzes through %s without any effect.\n"), fred->both.name); PrintMsg(exbuf); } else { struct wizard *wiz = &(fred->wiz); - sprintf(exbuf2, "The Anti-Spell jolts %s, causing the magical energies around %s hands to flicker.\n", wiz->name, pro_his(wiz->gender)); - PrintMsg2(cnum, "The Anti-Spell jolts you, interrupting the flow of magical energy in your hands.\n", exbuf2); + sprintf(exbuf2, _("The Anti-Spell jolts %s, causing the magical energies around %s hands to flicker.\n"), wiz->name, pro_his(wiz->gender)); + PrintMsg2(cnum, _("The Anti-Spell jolts you, interrupting the flow of magical energy in your hands.\n"), exbuf2); write_gestures(self, wiz, Gesture_ANTISPELL, Gesture_ANTISPELL); } @@ -276,21 +279,21 @@ if (zapl[SP__DELAYED_EFFECT]) { if (zapl[SP__REMOVE_ENCHANTMENT]) { /* cancelled */ - sprintf(exbuf2, "The Delayed Effect fizzes away into nothing as it approaches %s.\n", fred->both.name); + sprintf(exbuf2, _("The Delayed Effect fizzes away into nothing as it approaches %s.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The Delayed Effect fizzes away into nothing as it approaches you.\n", exbuf2); + PrintMsg2(cnum, _("The Delayed Effect fizzes away into nothing as it approaches you.\n"), exbuf2); else PrintMsg(exbuf2); } else { if (!wizflag) { - sprintf(exbuf, "The Delayed Effect whizzes through %s without any effect.\n", fred->both.name); + sprintf(exbuf, _("The Delayed Effect whizzes through %s without any effect.\n"), fred->both.name); PrintMsg(exbuf); } else { struct wizard *wiz = &(fred->wiz); - sprintf(exbuf2, "The Delayed Effect spreads out around %s.\n", wiz->name); - PrintMsg2(cnum, "The Delayed Effect spreads out in a cloud around you, waiting for you to complete a spell.\n", exbuf2); + sprintf(exbuf2, _("The Delayed Effect spreads out around %s.\n"), wiz->name); + PrintMsg2(cnum, _("The Delayed Effect spreads out in a cloud around you, waiting for you to complete a spell.\n"), exbuf2); wiz->delay_time = 4; } } @@ -299,21 +302,21 @@ if (zapl[SP__PERMANENCY]) { if (zapl[SP__REMOVE_ENCHANTMENT]) { /* cancelled */ - sprintf(exbuf2, "The Permanency fizzes away into nothing as it approaches %s.\n", fred->both.name); + sprintf(exbuf2, _("The Permanency fizzes away into nothing as it approaches %s.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The Permanency fizzes away into nothing as it approaches you.\n", exbuf2); + PrintMsg2(cnum, _("The Permanency fizzes away into nothing as it approaches you.\n"), exbuf2); else PrintMsg(exbuf2); } else { if (!wizflag) { - sprintf(exbuf, "The Permanency whizzes through %s without any effect.\n", fred->both.name); + sprintf(exbuf, _("The Permanency whizzes through %s without any effect.\n"), fred->both.name); PrintMsg(exbuf); } else { struct wizard *wiz = &(fred->wiz); - sprintf(exbuf2, "The Permanency spreads out around %s.\n", wiz->name); - PrintMsg2(cnum, "The Permanency spreads out in a cloud around you, waiting for you to complete a spell.\n", exbuf2); + sprintf(exbuf2, _("The Permanency spreads out around %s.\n"), wiz->name); + PrintMsg2(cnum, _("The Permanency spreads out in a cloud around you, waiting for you to complete a spell.\n"), exbuf2); wiz->perm_time = 4; } } @@ -322,17 +325,17 @@ if (zapl[SP__BLINDNESS] || perm->fl_blindness) { if (fred->both.blindness == 0) { /* not yet blind */ - sprintf(exbuf2, "%s blinks, then stumbles slightly as %s eyes turn milky.\n", fred->both.name, pro_his(fred->both.gender)); + sprintf(exbuf2, _("%s blinks, then stumbles slightly as %s eyes turn milky.\n"), fred->both.name, pro_his(fred->both.gender)); if (wizflag) - PrintMsg2(cnum, "A haze suddenly appears before your eyes. The world dims rapidly, and you are shortly enveloped in total darkness.\n", exbuf2); + PrintMsg2(cnum, _("A haze suddenly appears before your eyes. The world dims rapidly, and you are shortly enveloped in total darkness.\n"), exbuf2); else PrintMsg(exbuf2); fred->both.blindness = 4; } else { - sprintf(exbuf2, "%s is still blind.\n", fred->both.name); + sprintf(exbuf2, _("%s is still blind.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "You are still blind.\n", exbuf2); + PrintMsg2(cnum, _("You are still blind.\n"), exbuf2); else PrintMsg(exbuf2); fred->both.blindness = 4; @@ -342,9 +345,9 @@ if (fred->both.blindness) { fred->both.blindness--; if (fred->both.blindness==0) { - sprintf(exbuf2, "The milky cast fades from %s's eyes.\n", fred->both.name); + sprintf(exbuf2, _("The milky cast fades from %s's eyes.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The dark veil falls away from your eyes.\n", exbuf2); + PrintMsg2(cnum, _("The dark veil falls away from your eyes.\n"), exbuf2); else PrintMsg(exbuf2); } @@ -353,17 +356,17 @@ if (zapl[SP__INVISIBILITY] || perm->fl_invisibility) { if (fred->both.invisibility == 0) { /* not yet invisible */ - sprintf(exbuf2, "%s turns quietly translucent, and fades from view.\n", fred->both.name); + sprintf(exbuf2, _("%s turns quietly translucent, and fades from view.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The world becomes strangely misted in front of your eyes. Looking down, you see that your hands are no longer visible.\n", exbuf2); + PrintMsg2(cnum, _("The world becomes strangely misted in front of your eyes. Looking down, you see that your hands are no longer visible.\n"), exbuf2); else PrintMsg(exbuf2); fred->both.invisibility = 4; } else { - sprintf(exbuf2, "%s is still invisible.\n", fred->both.name); + sprintf(exbuf2, _("%s is still invisible.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "You are still invisible.\n", exbuf2); + PrintMsg2(cnum, _("You are still invisible.\n"), exbuf2); else PrintMsg(exbuf2); fred->both.invisibility = 4; @@ -373,9 +376,9 @@ if (fred->both.invisibility) { fred->both.invisibility--; if (fred->both.invisibility==0) { - sprintf(exbuf2, "A %s-shaped shadow appears, and %s rapidly becomes fully visible.\n", fred->both.name, pro_he(fred->both.gender)); + sprintf(exbuf2, _("A %s-shaped shadow appears, and %s rapidly becomes fully visible.\n"), fred->both.name, pro_he(fred->both.gender)); if (wizflag) - PrintMsg2(cnum, "Your limbs have become visible again.\n", exbuf2); + PrintMsg2(cnum, _("Your limbs have become visible again.\n"), exbuf2); else PrintMsg(exbuf2); } @@ -400,16 +403,16 @@ /* remove enchantments is obviously last. takes out mind_* also, and nowm_* for monsters. */ if (zapl[SP__REMOVE_ENCHANTMENT]) { - sprintf(exbuf2, "The Remove Enchantment whirls its dissipative energies around %s.\n", fred->both.name); + sprintf(exbuf2, _("The Remove Enchantment whirls its dissipative energies around %s.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The Remove Enchantment whirls its dissipative energies around you.\n", exbuf2); + PrintMsg2(cnum, _("The Remove Enchantment whirls its dissipative energies around you.\n"), exbuf2); else PrintMsg(exbuf2); } if (fred->both.mind_spell != (-1)) { - sprintf(exbuf, "You are freed of the %s.\n", spelllist[fred->both.mind_spell].name); - sprintf(exbuf2, "%s is freed of the %s.\n", fred->both.name, spelllist[fred->both.mind_spell].name); + sprintf(exbuf, _("You are freed of the %s.\n"), _(spelllist[fred->both.mind_spell].name)); + sprintf(exbuf2, _("%s is freed of the %s.\n"), fred->both.name, _(spelllist[fred->both.mind_spell].name)); if (wizflag) PrintMsg2(cnum, exbuf, exbuf2); else @@ -419,15 +422,15 @@ if (!wizflag) { struct creature *thud = &(fred->cre); if (thud->nowm_spell != (-1)) { - sprintf(exbuf2, "%s is freed of the %s.\n", thud->name, spelllist[thud->nowm_spell].name); + sprintf(exbuf2, _("%s is freed of the %s.\n"), thud->name, _(spelllist[thud->nowm_spell].name)); PrintMsg(exbuf2); thud->nowm_spell = (-1); } } if (fred->both.resistant_heat) { - sprintf(exbuf, "Your blue aura of Resist Heat fades away.\n"); - sprintf(exbuf2, "%s's blue aura of Resist Heat fades away.\n", fred->both.name); + sprintf(exbuf, _("Your blue aura of Resist Heat fades away.\n")); + sprintf(exbuf2, _("%s's blue aura of Resist Heat fades away.\n"), fred->both.name); if (wizflag) PrintMsg2(cnum, exbuf, exbuf2); else @@ -437,8 +440,8 @@ fred->both.fl_resist_heat = 0; if (fred->both.resistant_cold) { - sprintf(exbuf, "Your pink aura of Resist Cold fades away.\n"); - sprintf(exbuf2, "%s's pink aura of Resist Cold fades away.\n", fred->both.name); + sprintf(exbuf, _("Your pink aura of Resist Cold fades away.\n")); + sprintf(exbuf2, _("%s's pink aura of Resist Cold fades away.\n"), fred->both.name); if (wizflag) PrintMsg2(cnum, exbuf, exbuf2); else @@ -448,18 +451,18 @@ fred->both.fl_resist_cold = 0; if (fred->both.disease_time != (-1)) { - sprintf(exbuf2, "%s seems to have stopped shivering, and %s skin is no longer flushed and damp.\n", fred->both.name, pro_his(fred->both.gender)); + sprintf(exbuf2, _("%s seems to have stopped shivering, and %s skin is no longer flushed and damp.\n"), fred->both.name, pro_his(fred->both.gender)); if (wizflag) - PrintMsg2(cnum, "Your fever suddenly abates. You feel much better.\n", exbuf2); + PrintMsg2(cnum, _("Your fever suddenly abates. You feel much better.\n"), exbuf2); else PrintMsg(exbuf2); fred->both.disease_time = (-1); } if (fred->both.poison_time != (-1)) { - sprintf(exbuf2, "%s's color improves dramatically.\n", fred->both.name); + sprintf(exbuf2, _("%s's color improves dramatically.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The numbness and heaviness falls from your limbs. You feel much better.\n", exbuf2); + PrintMsg2(cnum, _("The numbness and heaviness falls from your limbs. You feel much better.\n"), exbuf2); else PrintMsg(exbuf2); fred->both.poison_time = (-1); @@ -467,17 +470,17 @@ if (wizflag) { if (fred->wiz.delay_time != 0) { - sprintf(exbuf2, "The Delayed Effect spell hovering around %s disintegrates.\n", fred->both.name); + sprintf(exbuf2, _("The Delayed Effect spell hovering around %s disintegrates.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The Delayed Effect spell hovering around you disintegrates.\n", exbuf2); + PrintMsg2(cnum, _("The Delayed Effect spell hovering around you disintegrates.\n"), exbuf2); else PrintMsg(exbuf2); fred->wiz.delay_time = 0; } /* and kill any banked spell */ if (fred->wiz.delay_bank != (-1)) { - sprintf(exbuf, "The %s spell that you had caught in a Delayed Effect is lost.\n", spelllist[fred->wiz.delay_bank].name); - sprintf(exbuf2, "The %s spell that %s had caught in a Delayed Effect is lost.\n", spelllist[fred->wiz.delay_bank].name, fred->wiz.name); + sprintf(exbuf, _("The %s spell that you had caught in a Delayed Effect is lost.\n"), _(spelllist[fred->wiz.delay_bank].name)); + sprintf(exbuf2, _("The %s spell that %s had caught in a Delayed Effect is lost.\n"), _(spelllist[fred->wiz.delay_bank].name), fred->wiz.name); PrintMsg2(cnum, exbuf, exbuf2); fred->wiz.delay_bank = (-1); } @@ -485,9 +488,9 @@ if (wizflag) { if (fred->wiz.perm_time != 0) { - sprintf(exbuf2, "The Permanency spell hovering around %s disintegrates.\n", fred->both.name); + sprintf(exbuf2, _("The Permanency spell hovering around %s disintegrates.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The Permanency spell hovering around you disintegrates.\n", exbuf2); + PrintMsg2(cnum, _("The Permanency spell hovering around you disintegrates.\n"), exbuf2); else PrintMsg(exbuf2); fred->wiz.perm_time = 0; @@ -495,9 +498,9 @@ } if (fred->both.prot_from_evil) { - sprintf(exbuf2, "%s's circle of Protection flickers out.\n", fred->both.name); + sprintf(exbuf2, _("%s's circle of Protection flickers out.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "Your circle of Protection flickers out.\n", exbuf2); + PrintMsg2(cnum, _("Your circle of Protection flickers out.\n"), exbuf2); else PrintMsg(exbuf2); fred->both.prot_from_evil = 0; @@ -509,16 +512,16 @@ if (fred->both.haste) { if (fred->both.haste!=5) { - sprintf(exbuf, "%s slows down to normal speed.\n", fred->both.name); + sprintf(exbuf, _("%s slows down to normal speed.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "Everyone comes back up to normal speed.\n", exbuf); + PrintMsg2(cnum, _("Everyone comes back up to normal speed.\n"), exbuf); else PrintMsg(exbuf); } else { - sprintf(exbuf, "The Haste on %s is nulled.\n", fred->both.name); + sprintf(exbuf, _("The Haste on %s is nulled.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The Haste on you is nulled.\n", exbuf); + PrintMsg2(cnum, _("The Haste on you is nulled.\n"), exbuf); else PrintMsg(exbuf); } @@ -526,27 +529,27 @@ } if (fred->both.timestop) { - sprintf(exbuf, "The Time Stop on %s is nulled.\n", fred->both.name); + sprintf(exbuf, _("The Time Stop on %s is nulled.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The Time Stop on you is nulled.\n", exbuf); + PrintMsg2(cnum, _("The Time Stop on you is nulled.\n"), exbuf); else PrintMsg(exbuf); fred->both.timestop = 0; } if (fred->both.invisibility) { - sprintf(exbuf2, "%s becomes visible again, rather suddenly.\n", fred->both.name); + sprintf(exbuf2, _("%s becomes visible again, rather suddenly.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "Your body tingles and becomes visible again.\n", exbuf2); + PrintMsg2(cnum, _("Your body tingles and becomes visible again.\n"), exbuf2); else PrintMsg(exbuf2); fred->both.invisibility = 0; } if (fred->both.blindness) { - sprintf(exbuf2, "%s's eyes abruptly clear.\n", fred->both.name); + sprintf(exbuf2, _("%s's eyes abruptly clear.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "Sight bursts in upon you again.\n", exbuf2); + PrintMsg2(cnum, _("Sight bursts in upon you again.\n"), exbuf2); else PrintMsg(exbuf2); fred->both.blindness = 0; @@ -570,16 +573,16 @@ if (zapl[SP__SHIELD]) { /* shield protects */ if (zapl[SP__STAB]==1) { - sprintf(exbuf2, "The knife slides off of %s's Shield.\n", fred->both.name); + sprintf(exbuf2, _("The knife slides off of %s's Shield.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The knife slides off of your Shield.\n", exbuf2); + PrintMsg2(cnum, _("The knife slides off of your Shield.\n"), exbuf2); else PrintMsg(exbuf2); } else { - sprintf(exbuf2, "The knives slide off of %s's Shield.\n", fred->both.name); + sprintf(exbuf2, _("The knives slide off of %s's Shield.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The knives slide off of your Shield.\n", exbuf2); + PrintMsg2(cnum, _("The knives slide off of your Shield.\n"), exbuf2); else PrintMsg(exbuf2); } @@ -587,15 +590,15 @@ else { /* hit */ if (zapl[SP__STAB]==1) { - sprintf(exbuf2, "The knife strikes %s.\n", fred->both.name); + sprintf(exbuf2, _("The knife strikes %s.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The knife strikes you.\n", exbuf2); + PrintMsg2(cnum, _("The knife strikes you.\n"), exbuf2); else PrintMsg(exbuf2); } else { - sprintf(exbuf, "The %s knives strike you.\n", number_name(zapl[SP__STAB])); - sprintf(exbuf2, "The %s knives strike %s.\n", number_name(zapl[SP__STAB]), fred->both.name); + sprintf(exbuf, _("The %s knives strike you.\n"), number_name(zapl[SP__STAB])); + sprintf(exbuf2, _("The %s knives strike %s.\n"), number_name(zapl[SP__STAB]), fred->both.name); if (wizflag) PrintMsg2(cnum, exbuf, exbuf2); else @@ -609,16 +612,16 @@ if (zapl[SP__SHIELD]) { /* shield protects */ if (zapl[SP__MISSILE]==1) { - sprintf(exbuf2, "The Missile shatters on %s's Shield.\n", fred->both.name); + sprintf(exbuf2, _("The Missile shatters on %s's Shield.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The Missile shatters on your Shield.\n", exbuf2); + PrintMsg2(cnum, _("The Missile shatters on your Shield.\n"), exbuf2); else PrintMsg(exbuf2); } else { - sprintf(exbuf2, "The Missiles shatter on %s's Shield.\n", fred->both.name); + sprintf(exbuf2, _("The Missiles shatter on %s's Shield.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The Missiles shatter on your Shield.\n", exbuf2); + PrintMsg2(cnum, _("The Missiles shatter on your Shield.\n"), exbuf2); else PrintMsg(exbuf2); } @@ -626,15 +629,15 @@ else { /* hit */ if (zapl[SP__MISSILE]==1) { - sprintf(exbuf2, "The Missile strikes %s.\n", fred->both.name); + sprintf(exbuf2, _("The Missile strikes %s.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The Missile strikes you.\n", exbuf2); + PrintMsg2(cnum, _("The Missile strikes you.\n"), exbuf2); else PrintMsg(exbuf2); } else { - sprintf(exbuf, "The %s Missiles strike you.\n", number_name(zapl[SP__MISSILE])); - sprintf(exbuf2, "The %s Missiles strike %s.\n", number_name(zapl[SP__MISSILE]), fred->both.name); + sprintf(exbuf, _("The %s Missiles strike you.\n"), number_name(zapl[SP__MISSILE])); + sprintf(exbuf2, _("The %s Missiles strike %s.\n"), number_name(zapl[SP__MISSILE]), fred->both.name); if (wizflag) PrintMsg2(cnum, exbuf, exbuf2); else @@ -647,15 +650,15 @@ if (zapl[SP__CAUSE_LIGHT_WOUNDS]) { /* hit */ if (zapl[SP__CAUSE_LIGHT_WOUNDS]==1) { - sprintf(exbuf2, "The Cause Light Wounds spell tears into %s.\n", fred->both.name); + sprintf(exbuf2, _("The Cause Light Wounds spell tears into %s.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The Cause Light Wounds spell tears into you.\n", exbuf2); + PrintMsg2(cnum, _("The Cause Light Wounds spell tears into you.\n"), exbuf2); else PrintMsg(exbuf2); } else { - sprintf(exbuf, "The %s Cause Light Wounds spells tear into you.\n", number_name(zapl[SP__CAUSE_LIGHT_WOUNDS])); - sprintf(exbuf2, "The %s Cause Light Wounds spells tear into %s.\n", number_name(zapl[SP__CAUSE_LIGHT_WOUNDS]), fred->both.name); + sprintf(exbuf, _("The %s Cause Light Wounds spells tear into you.\n"), number_name(zapl[SP__CAUSE_LIGHT_WOUNDS])); + sprintf(exbuf2, _("The %s Cause Light Wounds spells tear into %s.\n"), number_name(zapl[SP__CAUSE_LIGHT_WOUNDS]), fred->both.name); if (wizflag) PrintMsg2(cnum, exbuf, exbuf2); else @@ -667,15 +670,15 @@ if (zapl[SP__CAUSE_HEAVY_WOUNDS]) { /* hit */ if (zapl[SP__CAUSE_HEAVY_WOUNDS]==1) { - sprintf(exbuf2, "The Cause Heavy Wounds spell tears into %s.\n", fred->both.name); + sprintf(exbuf2, _("The Cause Heavy Wounds spell tears into %s.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The Cause Heavy Wounds spell tears painfully into you.\n", exbuf2); + PrintMsg2(cnum, _("The Cause Heavy Wounds spell tears painfully into you.\n"), exbuf2); else PrintMsg(exbuf2); } else { - sprintf(exbuf, "The %s Cause Heavy Wounds spells tear painfully into you.\n", number_name(zapl[SP__CAUSE_HEAVY_WOUNDS])); - sprintf(exbuf2, "The %s Cause Heavy Wounds spells tear into %s.\n", number_name(zapl[SP__CAUSE_HEAVY_WOUNDS]), fred->both.name); + sprintf(exbuf, _("The %s Cause Heavy Wounds spells tear painfully into you.\n"), number_name(zapl[SP__CAUSE_HEAVY_WOUNDS])); + sprintf(exbuf2, _("The %s Cause Heavy Wounds spells tear into %s.\n"), number_name(zapl[SP__CAUSE_HEAVY_WOUNDS]), fred->both.name); if (wizflag) PrintMsg2(cnum, exbuf, exbuf2); else @@ -687,15 +690,15 @@ if (zapl[SP__LIGHTNING_BOLT]) { /* hit */ if (zapl[SP__LIGHTNING_BOLT]==1) { - sprintf(exbuf2, "The Lightning Bolt staggers %s.\n", fred->both.name); + sprintf(exbuf2, _("The Lightning Bolt staggers %s.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The Lightning Bolt strikes you, staggering and nearly deafening you.\n", exbuf2); + PrintMsg2(cnum, _("The Lightning Bolt strikes you, staggering and nearly deafening you.\n"), exbuf2); else PrintMsg(exbuf2); } else { - sprintf(exbuf, "The %s Lightning Bolts crash into you; the concussions nearly knock you off your feet.\n", number_name(zapl[SP__LIGHTNING_BOLT])); - sprintf(exbuf2, "The %s Lightning Bolts strike %s, staggering %s.\n", number_name(zapl[SP__LIGHTNING_BOLT]), fred->both.name, pro_him(fred->both.gender)); + sprintf(exbuf, _("The %s Lightning Bolts crash into you; the concussions nearly knock you off your feet.\n"), number_name(zapl[SP__LIGHTNING_BOLT])); + sprintf(exbuf2, _("The %s Lightning Bolts strike %s, staggering %s.\n"), number_name(zapl[SP__LIGHTNING_BOLT]), fred->both.name, pro_him(fred->both.gender)); if (wizflag) PrintMsg2(cnum, exbuf, exbuf2); else @@ -708,16 +711,16 @@ if (fred->both.fl_resist_heat) { /* heat-resistant */ if (zapl[SP__FIREBALL]==1) { - sprintf(exbuf2, "The Fireball strikes %s, but the flames slide off %s Resist Heat aura.\n", fred->both.name, pro_his(fred->both.gender)); + sprintf(exbuf2, _("The Fireball strikes %s, but the flames slide off %s Resist Heat aura.\n"), fred->both.name, pro_his(fred->both.gender)); if (wizflag) - PrintMsg2(cnum, "The Fireball strikes you, but you feel only a slight warmth.\n", exbuf2); + PrintMsg2(cnum, _("The Fireball strikes you, but you feel only a slight warmth.\n"), exbuf2); else PrintMsg(exbuf2); } else { - sprintf(exbuf2, "The Fireballs strike %s, but the flames slide off %s Resist Heat aura.\n", fred->both.name, pro_his(fred->both.gender)); + sprintf(exbuf2, _("The Fireballs strike %s, but the flames slide off %s Resist Heat aura.\n"), fred->both.name, pro_his(fred->both.gender)); if (wizflag) - PrintMsg2(cnum, "The Fireballs strike you, but you feel only a slight warmth.\n", exbuf2); + PrintMsg2(cnum, _("The Fireballs strike you, but you feel only a slight warmth.\n"), exbuf2); else PrintMsg(exbuf2); } @@ -725,15 +728,15 @@ else { /* hit */ if (zapl[SP__FIREBALL]==1) { - sprintf(exbuf2, "The Fireball strikes %s.\n", fred->both.name); + sprintf(exbuf2, _("The Fireball strikes %s.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The Fireball strikes you with a roar of flame.\n", exbuf2); + PrintMsg2(cnum, _("The Fireball strikes you with a roar of flame.\n"), exbuf2); else PrintMsg(exbuf2); } else { - sprintf(exbuf, "The %s Fireballs blast into you, surrounding you with blinding flame.\n", number_name(zapl[SP__FIREBALL])); - sprintf(exbuf2, "The %s Fireballs strike %s.\n", number_name(zapl[SP__FIREBALL]), fred->both.name); + sprintf(exbuf, _("The %s Fireballs blast into you, surrounding you with blinding flame.\n"), number_name(zapl[SP__FIREBALL])); + sprintf(exbuf2, _("The %s Fireballs strike %s.\n"), number_name(zapl[SP__FIREBALL]), fred->both.name); if (wizflag) PrintMsg2(cnum, exbuf, exbuf2); else @@ -746,25 +749,25 @@ if (self->fl_firestorm) { if (zapl[SP__COUNTER_SPELL]) { /* counterspelled */ - sprintf(exbuf2, "The Counter-Spell around %s cancels the Fire Storm near %s.\n", fred->both.name, pro_him(fred->both.gender)); + sprintf(exbuf2, _("The Counter-Spell around %s cancels the Fire Storm near %s.\n"), fred->both.name, pro_him(fred->both.gender)); if (wizflag) - PrintMsg2(cnum, "The Counter-Spell cancels the Fire Storm in your vicinity.\n", exbuf2); + PrintMsg2(cnum, _("The Counter-Spell cancels the Fire Storm in your vicinity.\n"), exbuf2); else PrintMsg(exbuf2); } else if (fred->both.fl_resist_heat) { /* heat-resistant */ - sprintf(exbuf2, "The Fire Storm washes over %s, who remains unharmed inside %s blue aura.\n", fred->both.name, pro_his(fred->both.gender)); + sprintf(exbuf2, _("The Fire Storm washes over %s, who remains unharmed inside %s blue aura.\n"), fred->both.name, pro_his(fred->both.gender)); if (wizflag) - PrintMsg2(cnum, "The Fire Storm washes over you, but you feel only a gentle warmth.\n", exbuf2); + PrintMsg2(cnum, _("The Fire Storm washes over you, but you feel only a gentle warmth.\n"), exbuf2); else PrintMsg(exbuf2); } else { /* hit */ - sprintf(exbuf2, "The Fire Storm washes over %s.\n", fred->both.name); + sprintf(exbuf2, _("The Fire Storm washes over %s.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The Fire Storm washes over you.\n", exbuf2); + PrintMsg2(cnum, _("The Fire Storm washes over you.\n"), exbuf2); else PrintMsg(exbuf2); fred->both.hitpoints -= 5; @@ -774,9 +777,9 @@ if (self->fl_icestorm) { if (zapl[SP__COUNTER_SPELL]) { /* counterspelled */ - sprintf(exbuf2, "The Counter-Spell around %s cancels the Ice Storm near %s.\n", fred->both.name, pro_him(fred->both.gender)); + sprintf(exbuf2, _("The Counter-Spell around %s cancels the Ice Storm near %s.\n"), fred->both.name, pro_him(fred->both.gender)); if (wizflag) - PrintMsg2(cnum, "The Counter-Spell cancels the Ice Storm in your vicinity.\n", exbuf2); + PrintMsg2(cnum, _("The Counter-Spell cancels the Ice Storm in your vicinity.\n"), exbuf2); else PrintMsg(exbuf2); } @@ -785,17 +788,17 @@ } else if (fred->both.fl_resist_cold) { /* cold-resistant */ - sprintf(exbuf2, "The Ice Storm washes over %s, who remains unharmed inside %s pink aura.\n", fred->both.name, pro_his(fred->both.gender)); + sprintf(exbuf2, _("The Ice Storm washes over %s, who remains unharmed inside %s pink aura.\n"), fred->both.name, pro_his(fred->both.gender)); if (wizflag) - PrintMsg2(cnum, "The Ice Storm washes over you, but you feel only a gentle coolness.\n", exbuf2); + PrintMsg2(cnum, _("The Ice Storm washes over you, but you feel only a gentle coolness.\n"), exbuf2); else PrintMsg(exbuf2); } else { /* hit */ - sprintf(exbuf2, "The Ice Storm lashes at %s.\n", fred->both.name); + sprintf(exbuf2, _("The Ice Storm lashes at %s.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "The Ice Storm lashes at you.\n", exbuf2); + PrintMsg2(cnum, _("The Ice Storm lashes at you.\n"), exbuf2); else PrintMsg(exbuf2); fred->both.hitpoints -= 5; @@ -804,9 +807,9 @@ if (zapl[SP__FINGER_OF_DEATH]) { /* hit */ - sprintf(exbuf2, "%s turns very pale and drops to %s knees, clutching at %s chest....\n", fred->both.name, pro_his(fred->both.gender), pro_his(fred->both.gender)); + sprintf(exbuf2, _("%s turns very pale and drops to %s knees, clutching at %s chest....\n"), fred->both.name, pro_his(fred->both.gender), pro_his(fred->both.gender)); if (wizflag) - PrintMsg2(cnum, "You feel a sudden pressure in your chest, as if an iron band was squeezing your heart. You fall to your knees as the world dims....\n", exbuf2); + PrintMsg2(cnum, _("You feel a sudden pressure in your chest, as if an iron band was squeezing your heart. You fall to your knees as the world dims....\n"), exbuf2); else PrintMsg(exbuf2); fred->both.hitpoints = (-100); @@ -830,15 +833,15 @@ if (zapl[SP__CURE_LIGHT_WOUNDS]) { if (zapl[SP__CURE_LIGHT_WOUNDS]==1) { - sprintf(exbuf2, "The Cure Light Wounds spell weaves around %s, and %s wounds fade.\n", fred->both.name, pro_his(fred->both.gender)); + sprintf(exbuf2, _("The Cure Light Wounds spell weaves around %s, and %s wounds fade.\n"), fred->both.name, pro_his(fred->both.gender)); if (wizflag) - PrintMsg2(cnum, "The Cure Light Wounds spell weaves around you, and the pain of your wounds lessens.\n", exbuf2); + PrintMsg2(cnum, _("The Cure Light Wounds spell weaves around you, and the pain of your wounds lessens.\n"), exbuf2); else PrintMsg(exbuf2); } else { - sprintf(exbuf, "The %s Cure Light Wounds spells weave around you, and the pain of your wounds lessens.\n", number_name(zapl[SP__CURE_LIGHT_WOUNDS])); - sprintf(exbuf2, "The %s Cure Light Wounds spells weave around %s, and %s wounds fade.\n", number_name(zapl[SP__CURE_LIGHT_WOUNDS]), fred->both.name, pro_his(fred->both.gender)); + sprintf(exbuf, _("The %s Cure Light Wounds spells weave around you, and the pain of your wounds lessens.\n"), number_name(zapl[SP__CURE_LIGHT_WOUNDS])); + sprintf(exbuf2, _("The %s Cure Light Wounds spells weave around %s, and %s wounds fade.\n"), number_name(zapl[SP__CURE_LIGHT_WOUNDS]), fred->both.name, pro_his(fred->both.gender)); if (wizflag) PrintMsg2(cnum, exbuf, exbuf2); else @@ -850,15 +853,15 @@ if (zapl[SP__CURE_HEAVY_WOUNDS]) { if (zapl[SP__CURE_HEAVY_WOUNDS]==1) { - sprintf(exbuf2, "The Cure Heavy Wounds spell weaves around %s, and %s wounds heal.\n", fred->both.name, pro_his(fred->both.gender)); + sprintf(exbuf2, _("The Cure Heavy Wounds spell weaves around %s, and %s wounds heal.\n"), fred->both.name, pro_his(fred->both.gender)); if (wizflag) - PrintMsg2(cnum, "The Cure Heavy Wounds spell weaves around you, and your wounds heal considerably.\n", exbuf2); + PrintMsg2(cnum, _("The Cure Heavy Wounds spell weaves around you, and your wounds heal considerably.\n"), exbuf2); else PrintMsg(exbuf2); } else { - sprintf(exbuf, "The %s Cure Heavy Wounds spells weave around you, and your wounds heal considerably.\n", number_name(zapl[SP__CURE_HEAVY_WOUNDS])); - sprintf(exbuf2, "The %s Cure Heavy Wounds spells weave around %s, and %s wounds heal.\n", number_name(zapl[SP__CURE_HEAVY_WOUNDS]), fred->both.name, pro_his(fred->both.gender)); + sprintf(exbuf, _("The %s Cure Heavy Wounds spells weave around you, and your wounds heal considerably.\n"), number_name(zapl[SP__CURE_HEAVY_WOUNDS])); + sprintf(exbuf2, _("The %s Cure Heavy Wounds spells weave around %s, and %s wounds heal.\n"), number_name(zapl[SP__CURE_HEAVY_WOUNDS]), fred->both.name, pro_his(fred->both.gender)); if (wizflag) PrintMsg2(cnum, exbuf, exbuf2); else @@ -868,9 +871,9 @@ /* cure disease (not poison) */ if (fred->both.disease_time != (-1)) { - sprintf(exbuf2, "%s seems to have stopped shivering, and %s skin is no longer flushed and damp.\n", fred->both.name, pro_his(fred->both.gender)); + sprintf(exbuf2, _("%s seems to have stopped shivering, and %s skin is no longer flushed and damp.\n"), fred->both.name, pro_his(fred->both.gender)); if (wizflag) - PrintMsg2(cnum, "Your fever suddenly abates. You feel much better.\n", exbuf2); + PrintMsg2(cnum, _("Your fever suddenly abates. You feel much better.\n"), exbuf2); else PrintMsg(exbuf2); fred->both.disease_time = (-1); @@ -879,15 +882,15 @@ if (zapl[SP__RAISE_DEAD]) { if (zapl[SP__RAISE_DEAD]==1) { - sprintf(exbuf2, "The Raise Dead spell burns through %s. Although %s is not dead, the spell has a powerful healing effect.\n", fred->both.name, pro_he(fred->both.gender)); + sprintf(exbuf2, _("The Raise Dead spell burns through %s. Although %s is not dead, the spell has a powerful healing effect.\n"), fred->both.name, pro_he(fred->both.gender)); if (wizflag) - PrintMsg2(cnum, "The Raise Dead spell burns through you. Although you aren't dead, the spell has a powerful healing influence.\n", exbuf2); + PrintMsg2(cnum, _("The Raise Dead spell burns through you. Although you aren't dead, the spell has a powerful healing influence.\n"), exbuf2); else PrintMsg(exbuf2); } else { - sprintf(exbuf, "The %s Raise Dead spells burn through you. Although you aren't dead, the spells have a powerful healing influence.\n", number_name(zapl[SP__RAISE_DEAD])); - sprintf(exbuf2, "The %s Raise Dead spells burn through %s. Although %s is not dead, the spells have a powerful healing effect.\n", number_name(zapl[SP__RAISE_DEAD]), fred->both.name, pro_he(fred->both.gender)); + sprintf(exbuf, _("The %s Raise Dead spells burn through you. Although you aren't dead, the spells have a powerful healing influence.\n"), number_name(zapl[SP__RAISE_DEAD])); + sprintf(exbuf2, _("The %s Raise Dead spells burn through %s. Although %s is not dead, the spells have a powerful healing effect.\n"), number_name(zapl[SP__RAISE_DEAD]), fred->both.name, pro_he(fred->both.gender)); if (wizflag) PrintMsg2(cnum, exbuf, exbuf2); else @@ -900,9 +903,9 @@ if ((fred->both.hitpoints > fred->both.max_hitpoints) || (fred->both.hitpoints == fred->both.max_hitpoints && fred->both.hitpoints != orighp)) { fred->both.hitpoints = fred->both.max_hitpoints; - sprintf(exbuf2, "%s is in perfect health again.\n", fred->both.name); + sprintf(exbuf2, _("%s is in perfect health again.\n"), fred->both.name); if (wizflag) - PrintMsg2(cnum, "You are in perfect health again.\n", exbuf2); + PrintMsg2(cnum, _("You are in perfect health again.\n"), exbuf2); else PrintMsg(exbuf2); } @@ -910,9 +913,9 @@ else { /* not alive */ if (zapl[SP__RAISE_DEAD]) { - sprintf(exbuf2, "%s twitches, glows, and then jumps to %s feet! Except for a bit of incipient mold, %s is in perfect health again.\n", fred->both.name, pro_his(fred->both.gender), pro_he(fred->both.gender)); + sprintf(exbuf2, _("%s twitches, glows, and then jumps to %s feet! Except for a bit of incipient mold, %s is in perfect health again.\n"), fred->both.name, pro_his(fred->both.gender), pro_he(fred->both.gender)); if (wizflag) - PrintMsg2(cnum, "You are suddenly aware of a blast of energy running down every nerve! This is something of a shock, since you had just gotten used to being dead. Oh, well -- you'll be back eventually.\n", exbuf2); + PrintMsg2(cnum, _("You are suddenly aware of a blast of energy running down every nerve! This is something of a shock, since you had just gotten used to being dead. Oh, well -- you'll be back eventually.\n"), exbuf2); else PrintMsg(exbuf2); fred->both.alive = 1; --- spellcast-1.0.orig/Makefile +++ spellcast-1.0/Makefile @@ -1,3 +1,4 @@ +# Generated automatically from Makefile.in by configure. # These three lines define the fonts that spellcast tries to use by default; # it looks for FONT1 first, then FONT2, then FONT3. (If a user sets # his spellcast*font resource, that is tried first, instead of FONT1.) @@ -9,29 +10,53 @@ # The next line defines the directory in which game transcripts are # stored. It should be a fully-qualified pathname, beginning (but # not ending) with a slash. -LOGDIR = \"/tmp\" +LOGDIR = \"/var/games/spellcast\" # The next lines define the directories where the executable, man page, and # spell list postscript file are installed. Change them to whatever is appropriate. -DESTDIR=/afs/andrew.cmu.edu/usr0/games -DESTBIN=$(DESTDIR)/bin/.unpriv/@sys -DESTMAN=$(DESTDIR)/man/man6 -DESTLIB=$(DESTDIR)/lib/spellcast +DESTDIR=debian/tmp +DESTBIN=$(DESTDIR)/usr/games +DESTMAN=$(DESTDIR)/usr/share/man/man6 +DESTLIB=$(DESTDIR)/usr/share/doc/spellcast + +ifndef RESOLUTION +RESOLUTION = RES1024 +endif + # If you are compiling on a Sun and you find the game crashes # all the time, try uncommenting the next line. #OTHERLIBS = -lbsdmalloc -CFLAGS = -g -I/usr/local/include -I./bitmaps -DBODYFONT=$(FONT1) \ - -DBODYFONT_ALT=$(FONT2) -DBODYFONT_ALT2=$(FONT3) -DTRANSCRIPTDIR=$(LOGDIR) +# GETTEXT support +#POFILES = @POFILES@ +#RANLIB = @RANLIB@ +#USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +#USE_NLS = @USE_NLS@ +POSUB = po +VERSION = 1.0 +PACKAGE = spellcast +LOCALEDIR = \"/usr/share/locale\" + +# Add -DCOLOUR to CFLAGS for colour support +# Add -DLINESEP to CFLAGS to separate rounds with a line +CFLAGS = -O2 -g -I/usr/X11R6/include -I./bitmaps -DBODYFONT=$(FONT1) \ + -DBODYFONT_ALT=$(FONT2) -DBODYFONT_ALT2=$(FONT3) -DTRANSCRIPTDIR=$(LOGDIR) -D$(RESOLUTION) -DCOLOUR -DPACKAGE=\"$(PACKAGE)\" -DLOCALEDIR=$(LOCALEDIR) + LFLAGS = -g +# LFLAGS = -g0 -Wall -Wno-implicit -XLIB = -L/usr/local/lib -lX11 + +# If you are running on a system with non-default library paths, set +# the environmental variable LD_RUN_PATH when you compile the binary +#XLIB = -L/usr/local/lib -L/usr/X11R6/lib -lX11 -lsocket +XLIB = -L/usr/local/lib -L/usr/X11R6/lib -lX11 OBJS = engine.o espells.o execute.o execute2.o emonster.o etran.o XOBJS = main.o xtext.o xquery.o xloop.o xgest.o xbutton.o xtalk.o all: spellcast + cd ${POSUB} && make all # spellcast: the X executable spellcast: $(OBJS) $(XOBJS) @@ -47,10 +72,13 @@ $(CC) $(LFLAGS) -o makelist makelist.o espells.o install: spellcast - install -c -s spellcast $(DESTBIN) + for i in spellcast spellcast[0-9]*; do \ + install -c -s $$i $(DESTBIN); \ + done install -c spellcast.6 $(DESTMAN) -mkdir $(DESTLIB) install -c spelllist.ps $(DESTLIB) + cd ${POSUB} && make install main.o: handwave.h spelllist.h xspell.h patchlevel.h xtext.o: handwave.h spelllist.h xspell.h @@ -79,4 +107,8 @@ cat bitmaps/base.ps tmp.ps > spelllist.ps clean: - rm -f *~ *.o spellcast stupid makelist tmp.ps core + -rm -f *~ *.o stupid makelist tmp.ps core + +realclean: clean + -rm -f spellcast[0-9]* spellcast + cd ${POSUB} && make clean --- spellcast-1.0.orig/xloop.c +++ spellcast-1.0/xloop.c @@ -7,6 +7,9 @@ #include "spelllist.h" #include "xspell.h" +#include +#define _(String) gettext (String) + extern void redraw(), redraw_stats(), redraw_queries(), redraw_buttons(), redraw_text(), redraw_column(); extern int gesture_hit(); @@ -232,11 +235,6 @@ } } -#define STATS_X (476) -#define STATS_Y (449) -#define STATS_W (324) -#define STATS_H (104) -#define STATS_HP (244) void init_stats(py) struct player *py; @@ -358,7 +356,7 @@ DrawStringField(py, NameOfBeing(gameval, st->type, st->index), STATS_X+24, ypos, STATS_W-24); } - sprintf(sbuf, "%d %s%s%s%s%s%s%s", st->hp, + sprintf(sbuf, _("%d %s%s%s%s%s%s%s"), st->hp, (st->stuff & Stuff_INVISIBLE) ? "I" : "", (st->stuff & Stuff_RESIST_HEAT) ? "H" : "", (st->stuff & Stuff_RESIST_COLD) ? "C" : "", --- spellcast-1.0.orig/xtalk.c +++ spellcast-1.0/xtalk.c @@ -1,16 +1,13 @@ #include #include #include +#include #include #include #include "handwave.h" #include "spelllist.h" #include "xspell.h" -#define TALK_X (348) -#define TALK_Y (576) -#define TALK_W (448) -#define TALK_LEADING (8) static char bigbuf[2048], bigbuf2[2048]; --- spellcast-1.0.orig/stupid.c +++ spellcast-1.0/stupid.c @@ -4,6 +4,9 @@ #include "handwave.h" #include "spelllist.h" +#include +#define _(String) gettext (String) + struct maingame { int ignorestuff; }; @@ -26,11 +29,11 @@ struct maingame *rock; { if (msg1) { - printf("%d: ", person1); + printf(_("%d: "), person1); fputs(msg1, stdout); } if (msgelse) { - printf("~%d: ", person1); + printf(_("~%d: "), person1); fputs(msgelse, stdout); } } @@ -42,15 +45,15 @@ struct maingame *rock; { if (msg1) { - printf("%d: ", person1); + printf(_("%d: "), person1); fputs(msg1, stdout); } if (msg2) { - printf("%d: ", person2); + printf(_("%d: "), person2); fputs(msg2, stdout); } if (msgelse) { - printf("~%d/~%d: ", person1, person2); + printf(_("~%d/~%d: "), person1, person2); fputs(msgelse, stdout); } } @@ -75,18 +78,18 @@ for (ix=0; ix=hlist[0]) { - printf(" [Please enter a number from 0 to %d]: ", hlist[0]-1); + printf(_(" [Please enter a number from 0 to %d]: "), hlist[0]-1); } else break; @@ -120,13 +123,13 @@ break; case Qu_ElementalType: printf( -"%d: Which type of elemental do you want to summon?\n (0:fire, 1:ice): ", +_("%d: Which type of elemental do you want to summon?\n (0:fire, 1:ice): "), qlist[ix].player); while (1) { fgets(inbuf, 256, stdin); res = atol(inbuf); if (res!=0 && res!=1) { - printf(" [Please enter 0 or 1]: "); + printf(_(" [Please enter 0 or 1]: ")); } else break; @@ -135,7 +138,7 @@ break; case Qu_ParalysisHand: printf( -"%d: Which of %s's hands do you want to paralyze?\n (0:left, 1:right): ", +_("%d: Which of %s's hands do you want to paralyze?\n (0:left, 1:right): "), qlist[ix].player, NameOfBeing(gameval, QuVal_Target_Wizard, qlist[ix].rock)); @@ -143,7 +146,7 @@ fgets(inbuf, 256, stdin); res = atol(inbuf); if (res!=0 && res!=1) { - printf(" [Please enter 0 or 1]: "); + printf(_(" [Please enter 0 or 1]: ")); } else break; @@ -152,7 +155,7 @@ break; case Qu_CharmHand: printf( -"%d: Which of %s's hands do you want to charm?\n (0:left, 1:right): ", +_("%d: Which of %s's hands do you want to charm?\n (0:left, 1:right): "), qlist[ix].player, NameOfBeing(gameval, QuVal_Target_Wizard, qlist[ix].rock)); @@ -160,7 +163,7 @@ fgets(inbuf, 256, stdin); res = atol(inbuf); if (res!=0 && res!=1) { - printf(" [Please enter 0 or 1]: "); + printf(_(" [Please enter 0 or 1]: ")); } else break; @@ -178,14 +181,14 @@ jx = 0; } printf( -"%d: What gesture do you want %s's %s hand to make?\n (enter a letter): ", +_("%d: What gesture do you want %s's %s hand to make?\n (enter a letter): "), qlist[ix].player, NameOfBeing(gameval, QuVal_Target_Wizard, spellnum), (jx?"right":"left")); while (1) { fgets(inbuf, 256, stdin); if (inbuf[0]=='\0' || inbuf[0]=='\n') { - printf(" [Please enter a letter]: "); + printf(_(" [Please enter a letter]: ")); } else { res = cheap_translate(inbuf[0]); @@ -200,28 +203,28 @@ spellnum = jx % 256; switch (attnum) { case 1: - sprintf(outbuf, "Whom do you want %s to attack?", + sprintf(outbuf, _("Whom do you want %s to attack?"), NameOfBeing(gameval, QuVal_Target_Creature, spellnum)); break; case 2: - sprintf(outbuf, "Whom do you want %s's first attack to be at?", + sprintf(outbuf, _("Whom do you want %s's first attack to be at?"), NameOfBeing(gameval, QuVal_Target_Creature, spellnum)); break; case 3: - sprintf(outbuf, "Whom do you want %s's second attack to be at?", + sprintf(outbuf, _("Whom do you want %s's second attack to be at?"), NameOfBeing(gameval, QuVal_Target_Creature, spellnum)); break; default: - sprintf(outbuf, "ERROR: Query about %d (%d)", spellnum, attnum); + sprintf(outbuf, _("ERROR: Query about %d (%d)"), spellnum, attnum); break; } - printf("%d: %s\n", qlist[ix].player, outbuf); + printf(_("%d: %s\n"), qlist[ix].player, outbuf); targnum = 0; targetlist[targnum] = 0; - targetnamelist[targnum] = "nobody"; + targetnamelist[targnum] = _("nobody"); targnum++; numtargs = NumberOfTargets(gameval, QuVal_Target_Wizard); for (jx=0; jx=numtargs) { - printf(" [Please enter a number from 0 to %d]: ", + printf(_(" [Please enter a number from 0 to %d]: "), numtargs-1); } else @@ -263,16 +266,16 @@ case Qu_WhichToDelay: case Qu_WhichToPerm: if (qlist[ix].qtype == Qu_WhichToDelay) - printf("%d: Which spell do you want to delay?\n", + printf(_("%d: Which spell do you want to delay?\n"), qlist[ix].player); else - printf("%d: Which spell do you want to make permanent?\n", + printf(_("%d: Which spell do you want to make permanent?\n"), qlist[ix].player); hlist = (int *)qlist[ix].rock; printf(" ["); for (jx=0; hlist[jx]!=(-1); jx++) { - printf("%s%d: %s", ((jx)?", ":""), jx, spelllist[hlist[jx]].name); + printf(_("%s%d: %s"), ((jx)?", ":""), jx, _(spelllist[hlist[jx]].name)); } numtargs = jx; printf("]: "); @@ -280,7 +283,7 @@ fgets(inbuf, 256, stdin); res = atol(inbuf); if (res<0 || res>=numtargs) { - printf(" [Please enter a number from 0 to %d]: ", numtargs-1); + printf(_(" [Please enter a number from 0 to %d]: "), numtargs-1); } else break; @@ -295,24 +298,24 @@ jx = (int)(qlist[ix].rock); spellnum = jx & (~QuVal_Hand_MASK); if (jx & QuVal_Hand_Left) - handage = "with your left hand"; + handage = _("with your left hand"); else if (jx & QuVal_Hand_Right) - handage = "with your right hand"; + handage = _("with your right hand"); else if (jx & QuVal_Hand_Both) - handage = "with both hands"; + handage = _("with both hands"); else - handage = "from the Delayed Effect"; + handage = _("from the Delayed Effect"); if (spellnum==SP__STAB) - sprintf(outbuf, "Who do you want to stab at (%s)?", handage); + sprintf(outbuf, _("Who do you want to stab at (%s)?"), handage); else - sprintf(outbuf, "Who do you want to cast %s at (%s)?", - spelllist[spellnum].name, handage); - printf("%d: %s\n", qlist[ix].player, outbuf); + sprintf(outbuf, _("Who do you want to cast %s at (%s)?"), + _(spelllist[spellnum].name), handage); + printf(_("%d: %s\n"), qlist[ix].player, outbuf); targnum = 0; if (qlist[ix].qtype==Qu_TargetBeingNone || qlist[ix].qtype==Qu_TargetWizardNone) { targetlist[targnum] = 0; - targetnamelist[targnum] = "nobody"; + targetnamelist[targnum] = _("nobody"); targnum++; } numtargs = NumberOfTargets(gameval, QuVal_Target_Wizard); @@ -344,19 +347,19 @@ } numtargs = targnum; if (numtargs==0) - printf("ERROR: No targets available!\n"); + printf(_("ERROR: No targets available!\n")); else { printf(" ["); for (jx=0; jx=numtargs) { - printf(" [Please enter a number from 0 to %d]: ", + printf(_(" [Please enter a number from 0 to %d]: "), numtargs-1); } else @@ -367,7 +370,7 @@ break; default: - printf("ERROR: Unknown query type %d!\n", qlist[ix].qtype); + printf(_("ERROR: Unknown query type %d!\n"), qlist[ix].qtype); break; } } @@ -416,7 +419,7 @@ for (ix=0; ix=0) - printf("%s (%d); ", NameOfBeing(gameval, QuVal_Target_Wizard, ix), hp); + printf(_("%s (%d); "), NameOfBeing(gameval, QuVal_Target_Wizard, ix), hp); } max = NumberOfBeings(gameval, QuVal_Target_Creature); for (ix=0; ix MAXPLAYERS) { - printf("There is a maximum of %d players!\n", MAXPLAYERS); + printf(_("There is a maximum of %d players!\n"), MAXPLAYERS); exit(12); } @@ -500,10 +503,10 @@ val = 0; switch (TurnType(gameval)) { case Turn_HASTE: - printf("(hasted) "); + printf(_("(hasted) ")); break; case Turn_TIMESTOP: - printf("(timestopped) "); + printf(_("(timestopped) ")); break; case Turn_NORMAL: default: @@ -512,9 +515,9 @@ for (ix=0; ix +#include #include #include #include "handwave.h" #include "spelllist.h" #include "xspell.h" -#define TEXT_WID (400) -#define TEXT_HGT (512) -#define TEXT_X (32) -#define TEXT_Y (32) - -#define MAXLINESIZE (512) /* maximum number of chars that could possibly fit - in a line. If the player uses bits1, this will - probably crash. Tough. */ - static void redraw_text_only(); void redraw_scrollbar(); @@ -57,6 +49,34 @@ py->sitext.h = TEXT_HGT; py->sitext.redraw = redraw_text_only; } +#ifdef COLOUR + +static long check_name(struct player *py, char *str) +{ + char *temp; + int i; + + for (i = 0; i < MAXPLAYERS; i++){ + temp = str; + + /* is there a name in this entry */ + + if (namelist[i]){ + + /* does it match the start of the string we were passed? */ + + if (strncmp(namelist[i], temp, strlen(namelist[i])) == 0){ + + return (col_list[i]); + } + } + } + + /* return default colour */ + return (BlackPixel(py->dpy, py->scn)); +} + +#endif static void redraw_text_only(py, baronly) struct player *py; @@ -65,6 +85,10 @@ int ix, sline; int len, width; +#ifdef COLOUR + long col; +#endif + if (!baronly) { /* draw text */ for (ix=py->sitext.top; ix<=py->sitext.nlines; ix++) { @@ -78,6 +102,11 @@ len = py->lineindex[ix].len; } width = py->lineindex[ix].width; +#ifdef COLOUR + /* F.Hendrikx */ + col = check_name(py, py->linebuf+py->lineindex[ix].start); + XSetForeground(py->dpy, py->blackgc, col); +#endif XDrawImageString(py->dpy, py->win, py->blackgc, py->textx, py->texty + py->lineheight*sline, py->linebuf+py->lineindex[ix].start, len); @@ -195,6 +224,11 @@ cx = cy; } +#ifdef COLOUR + /* F.Hendrikx */ + /* call redraw so that colours are correct */ + redraw_text (py); +#endif } int in_scrollbar_box(si, xpos, ypos) @@ -267,7 +301,7 @@ return ms_Scroll; } -int scrollbar_motion(si, xpos, ypos, button) +void scrollbar_motion(si, xpos, ypos, button) struct scroll_interface *si; int xpos, ypos; int button; @@ -290,7 +324,7 @@ } } -int scrollbar_release(si, xpos, ypos, button) +void scrollbar_release(si, xpos, ypos, button) struct scroll_interface *si; int xpos, ypos; int button; --- spellcast-1.0.orig/spellcast.6 +++ spellcast-1.0/spellcast.6 @@ -23,7 +23,11 @@ .PP All other machines must add your machine to their X access lists, using -.B xhost +. +.B xhost + . +Please be careful with this since using +.B xhost + +you open a really big hole in the security of your system. You should +only allow access to trusted machines. .PP There is a maximum of seven .I remotedisplay @@ -42,17 +46,17 @@ .I namestring of the form .br -.in+4 +.TP .I name:f for a female character, -.br +.TP .I name:m for a male, -.br +.TP .I name:n for a character whose gender is ambiguous or not well-defined in human terms, and -.br +.TP .I name:x for a genderless character. .PP @@ -156,21 +160,20 @@ After that, there may be some letters indicating that certain spells are in effect: .br -.in+8 +.TP I: invisible -.br +.TP H: resistant to heat -.br +.TP C: resistant to cold -.br +.TP P: protection from evil -.br +.TP b: blind -.br +.TP d: diseased -.br +.TP p: poisoned -.in-8 .PP .B Speech window .br @@ -276,14 +279,13 @@ that gestures can be made to operate in more than one spell, provided that: .br -.in+4 +.TP a) the gestures have been made in the correct sequence without interruption; -.br +.TP b) not more than one spell is created per gesture; -.br. +.TP c) all gestures for one spell are made with the same hand. -.in-4 .PP For instance, the left hand could cast the F-F-F above and could be followed by @@ -681,7 +683,8 @@ .B P-S-D-D .PP Except for cancellation with other enchantments, this spell only -affects monsters (but not elementals). Control of the monster is +affects monsters (including elementals, though it's not very usefel +on them!). Control of the monster is transferred to the caster of the spell (or retained by him) as of this turn; i.e., the monster will attack whosoever its new controller dictates from that turn onwards including that turn. Further charms --- spellcast-1.0.orig/emonster.c +++ spellcast-1.0/emonster.c @@ -1,9 +1,19 @@ #include #include +#include +#include #include "handwave.h" #include "internal.h" +#include +#define _(String) gettext (String) + + +char *pro_he(int gender); +char *pro_his(int gender); +char *pro_him(int gender); +char *pro_himself(int gender); static char bigbuf[2048]; static char bigbuf2[2048]; @@ -115,34 +125,34 @@ case Creature_GOBLIN: thud->max_hitpoints = 1; snaffi_name(); - strcat(bigbuf, " the Goblin"); + strcat(bigbuf, _(" the Goblin")); break; case Creature_OGRE: thud->max_hitpoints = 2; kuruk_name(); - strcat(bigbuf, " the Ogre"); + strcat(bigbuf, _(" the Ogre")); break; case Creature_TROLL: thud->max_hitpoints = 3; kuruk_name(); - strcat(bigbuf, " the Troll"); + strcat(bigbuf, _(" the Troll")); break; case Creature_GIANT: thud->max_hitpoints = 4; kuruk_name(); - strcat(bigbuf, " the Giant"); + strcat(bigbuf, _(" the Giant")); break; case Creature_FIREL: thud->max_hitpoints = 3; thud->nocorpse = 1; kuruk_name(); - strcat(bigbuf, " the Fiery"); + strcat(bigbuf, _(" the Fiery")); break; case Creature_ICEL: thud->max_hitpoints = 3; thud->nocorpse = 1; kuruk_name(); - strcat(bigbuf, " the Icy"); + strcat(bigbuf, _(" the Icy")); break; } thud->hitpoints = thud->max_hitpoints; @@ -153,7 +163,7 @@ void execute_monsters(self) struct realgame *self; { - int ix, cx, jx, kx, numattacks, qtype, qnum; + int ix, cx, jx, kx, numattacks = 0, qtype, qnum; int target, targettype; struct creature *thud; @@ -178,7 +188,7 @@ numattacks = 1; break; default: - PrintMsg("ERROR: wrong type of turn in execute_monsters()\n"); + PrintMsg(_("ERROR: wrong type of turn in execute_monsters()\n")); break; } for (jx=0; jxname); + sprintf(bigbuf, _("%s suddenly looks confused.\n"), thud->name); PrintMsg(bigbuf); } break; case SP__PARALYSIS: qtype = Qu_NoQuery; if (jx==0) { - sprintf(bigbuf, "%s is paralyzed and cannot attack.\n", thud->name); + sprintf(bigbuf, _("%s is paralyzed and cannot attack.\n"), thud->name); PrintMsg(bigbuf); } break; case SP__AMNESIA: qtype = Qu_NoQuery; if (jx==0) { - sprintf(bigbuf, "%s looks around blankly.\n", thud->name); + sprintf(bigbuf, _("%s looks around blankly.\n"), thud->name); PrintMsg(bigbuf); } break; @@ -296,7 +306,7 @@ targettype = ival & QuVal_Target_MASK; } } - /*printf("### attack of %s: %d, %d\n", thud->name, targettype, target);*/ + /*printf(_("### attack of %s: %d, %d\n"), thud->name, targettype, target);*/ thud->last_targettype = targettype; thud->last_target = target; switch (targettype) { @@ -317,7 +327,7 @@ for (ix=0; ixnumcres; ix++) { thud = &(self->cre[ix]); if (thud->alive) { - /*printf("### cycling %s: %d => %d\n", thud->name, thud->mind_spell, + /*printf(_("### cycling %s: %d => %d\n"), thud->name, thud->mind_spell, thud->nowm_spell);*/ if (self->turntype==Turn_TIMESTOP && !thud->timestop) { /* do not cycle */ @@ -349,7 +359,7 @@ /* say nothing */ } else { - sprintf(bigbuf, "%s refuses to attack %s.\n", thud->name, + sprintf(bigbuf, _("%s refuses to attack %s.\n"), thud->name, pro_himself(fred->both.gender)); PrintMsg(bigbuf); } @@ -358,8 +368,8 @@ if (!(thud->type==Creature_FIREL || thud->type==Creature_ICEL) && fred->both.invisibility) { - sprintf(bigbuf, "%s tries to attack you, but cannot see you.\n", thud->name); - sprintf(bigbuf2, "%s tries to attack %s, but cannot see %s.\n", thud->name, + sprintf(bigbuf, _("%s tries to attack you, but cannot see you.\n"), thud->name); + sprintf(bigbuf2, _("%s tries to attack %s, but cannot see %s.\n"), thud->name, fred->both.name, pro_him(fred->both.gender)); if (wizflag) PrintMsg2(cnum, bigbuf, bigbuf2); @@ -369,8 +379,8 @@ } if (zapl[SP__SHIELD]) { - sprintf(bigbuf, "The attack of %s is blocked by your Shield.\n", thud->name); - sprintf(bigbuf2, "The attack of %s is blocked by %s's Shield.\n", thud->name, + sprintf(bigbuf, _("The attack of %s is blocked by your Shield.\n"), thud->name); + sprintf(bigbuf2, _("The attack of %s is blocked by %s's Shield.\n"), thud->name, fred->both.name); if (wizflag) PrintMsg2(cnum, bigbuf, bigbuf2); @@ -381,9 +391,9 @@ if (thud->type==Creature_FIREL) { if (fred->both.fl_resist_heat) { - sprintf(bigbuf, "%s reaches towards you, but you feel only a warm breeze.\n", + sprintf(bigbuf, _("%s reaches towards you, but you feel only a warm breeze.\n"), thud->name); - sprintf(bigbuf2, "%s reaches toward %s, but cannot penetrate %s blue aura.\n", + sprintf(bigbuf2, _("%s reaches toward %s, but cannot penetrate %s blue aura.\n"), thud->name, fred->both.name, pro_his(fred->both.gender)); if (wizflag) PrintMsg2(cnum, bigbuf, bigbuf2); @@ -391,8 +401,8 @@ PrintMsg(bigbuf2); } else { - sprintf(bigbuf, "%s hurls tongues of fire at you.\n", thud->name); - sprintf(bigbuf2, "%s hurls fire at %s.\n", thud->name, fred->both.name); + sprintf(bigbuf, _("%s hurls tongues of fire at you.\n"), thud->name); + sprintf(bigbuf2, _("%s hurls fire at %s.\n"), thud->name, fred->both.name); if (wizflag) PrintMsg2(cnum, bigbuf, bigbuf2); else @@ -402,9 +412,9 @@ } else if (thud->type==Creature_ICEL) { if (fred->both.fl_resist_cold) { - sprintf(bigbuf, "%s reaches towards you, but you feel only a chill breeze.\n", + sprintf(bigbuf, _("%s reaches towards you, but you feel only a chill breeze.\n"), thud->name); - sprintf(bigbuf2, "%s reaches toward %s, but cannot penetrate %s pink aura.\n", + sprintf(bigbuf2, _("%s reaches toward %s, but cannot penetrate %s pink aura.\n"), thud->name, fred->both.name, pro_his(fred->both.gender)); if (wizflag) PrintMsg2(cnum, bigbuf, bigbuf2); @@ -412,8 +422,8 @@ PrintMsg(bigbuf2); } else { - sprintf(bigbuf, "%s hurls splinters of ice at you.\n", thud->name); - sprintf(bigbuf2, "%s hurls ice at %s.\n", thud->name, fred->both.name); + sprintf(bigbuf, _("%s hurls splinters of ice at you.\n"), thud->name); + sprintf(bigbuf2, _("%s hurls ice at %s.\n"), thud->name, fred->both.name); if (wizflag) PrintMsg2(cnum, bigbuf, bigbuf2); else @@ -424,13 +434,13 @@ else { /* other creature types */ if (fred==(union being *)thud) { - sprintf(bigbuf, "%s attacks %s!\n", thud->name, + sprintf(bigbuf, _("%s attacks %s!\n"), thud->name, pro_himself(fred->both.gender)); PrintMsg(bigbuf); } else { - sprintf(bigbuf, "%s attacks you.\n", thud->name); - sprintf(bigbuf2, "%s attacks %s.\n", thud->name, fred->both.name); + sprintf(bigbuf, _("%s attacks you.\n"), thud->name); + sprintf(bigbuf2, _("%s attacks %s.\n"), thud->name, fred->both.name); if (wizflag) PrintMsg2(cnum, bigbuf, bigbuf2); else --- spellcast-1.0.orig/xquery.c +++ spellcast-1.0/xquery.c @@ -1,23 +1,12 @@ #include #include +#include #include #include #include "handwave.h" #include "spelllist.h" #include "xspell.h" -#define QUERY_X (32) -#define QUERY_Y (620) -#define QUERY_W (736) -#define QUERY_H (100) -#define QUERY_AW (450) - -#define QUERY_LEADING (8) -#define QMENU_LEADING (4) -#define QMENU_BORDER (4) - -#define GEST_SPACE (50) - typedef struct _tempstring { struct _tempstring *next; char str[1]; @@ -288,7 +277,7 @@ int pnum; int answer_init; struct target_list *tl; - static qu_buf[MAXQUESTIONLENGTH], ans_buf[MAXANSWERLENGTH]; + static char qu_buf[MAXQUESTIONLENGTH], ans_buf[MAXANSWERLENGTH]; flush_tempstrings(); @@ -693,7 +682,7 @@ hitrow = (-1); if (hitrow==py->query_sel) - return; + return 0; if (py->query_sel != (-1)) { /* erase old */ @@ -729,7 +718,7 @@ hitrow = (-1); if (hitrow==py->query_sel) - return; + return 0; if (py->query_sel != (-1)) { /* erase old */ @@ -751,6 +740,8 @@ py->lineheight+QMENU_LEADING); } } + + return 0; } int query_release(py, xpos, ypos, button) @@ -820,5 +811,6 @@ } redraw_queries_only(py, 0); } + return 0; } --- spellcast-1.0.orig/espells.c +++ spellcast-1.0/espells.c @@ -3,6 +3,10 @@ #include "handwave.h" #include "internal.h" +#include +#define _(String) gettext (String) +#define gettext_noop(String) (String) + /* the following are purely for readability */ #define P Gesture_PALM #define D Gesture_DIGIT @@ -17,50 +21,51 @@ #define C2 (Gesture_CLAPHALF | Gesture_DOUBLE) #define S2 (Gesture_SNAP | Gesture_DOUBLE) +/* Have to put this into a initialization during startup of the program */ struct spelldef spelllist[NUMSPELLS] = { - {4, {C2, D, P, W}, 0, 1, "Dispel Magic"}, - {5, {C2, S, W, W, S}, 0, 1, "Summon Elemental"}, - {2, {C2, W2}, 0, 1, "Magic Mirror"}, - {5, {D, F, F, D, D}, 0, 0, "Lightning Bolt"}, - {4, {D, F, P, W}, 0, 1, "Cure Heavy Wounds"}, - {3, {D, F, W}, 0, 1, "Cure Light Wounds"}, - {3, {D, P, P}, 1, 0, "Amnesia"}, - {3, {D, S, F}, 1, 0, "Confusion"}, - {6, {D, S, F, F, F, C2},0, 0,"Disease"}, - {5, {D, W, F, F, D2}, 1, 0, "Blindness"}, - {6, {D, W, S, S, S, P},0, 1, "Delayed Effect"}, - {6, {D, W, W, F, W, C2},0, 1,"Raise Dead"}, - {6, {D, W, W, F, W, D},0, 0, "Poison"}, - {3, {F, F, F}, 1, 0, "Paralysis"}, - {5, {F, P, S, F, W}, 0, 1, "Summon Troll"}, - {5, {F, S, S, D, D}, 0, 0, "Fireball"}, - {1, {P}, 0, 1, "Shield"}, - {1, {P2}, 0, 0, "SURRENDER"}, - {4, {P, D, W, P}, 0, 1, "Remove Enchantment"}, - {4, {P, P, W2, S2}, 1, 1, "Invisibility"}, - {4, {P, S, D, D}, 1, 0, "Charm Monster"}, - {4, {P, S, D, F}, 1, 0, "Charm Person"}, - {4, {P, S, F, W}, 0, 1, "Summon Ogre"}, - {8, {P, W, P, F, S, S, S, D},0,0,"Finger of Death"}, - {6, {P, W, P, W, W, C2},1, 1,"Haste"}, - {2, {S, D}, 0, 0, "Missile"}, - {3, {S, F, W}, 0, 1, "Summon Goblin"}, - {3, {S, P, F}, 0, 0, "Anti-Spell"}, - {7, {S, P, F, P, S, D, W},0,1,"Permanency"}, - {4, {S, P, P, C2}, 0, 1, "Time Stop"}, - {4, {S, S, F, P}, 1, 1, "Resist Cold"}, - {3, {S, W, D}, 1, 0, "Fear"}, - {4, {S, W, W, C2}, 0, 0, "Fire Storm"}, - {4, {W, D, D, C2}, 0, 0, "Lightning Bolt"}, - {3, {W, F, P}, 0, 0, "Cause Light Wounds"}, - {6, {W, F, P, S, F, W},0, 1, "Summon Giant"}, - {4, {W, P, F, D}, 0, 0, "Cause Heavy Wounds"}, - {3, {W, P, P}, 0, 0, "Counter-Spell"}, - {4, {W, S, S, C2}, 0, 0, "Ice Storm"}, - {4, {W, W, F, P}, 1, 1, "Resist Heat"}, - {3, {W, W, P}, 1, 1, "Protection From Evil"}, - {3, {W, W, S}, 0, 0, "Counter-Spell"}, - {1, {Gesture_KNIFE}, 0, 0, "stab"} + {4, {C2, D, P, W}, 0, 1, gettext_noop("Dispel Magic")}, + {5, {C2, S, W, W, S}, 0, 1, gettext_noop("Summon Elemental")}, + {2, {C2, W2}, 0, 1, gettext_noop("Magic Mirror")}, + {5, {D, F, F, D, D}, 0, 0, gettext_noop("Lightning Bolt")}, + {4, {D, F, P, W}, 0, 1, gettext_noop("Cure Heavy Wounds")}, + {3, {D, F, W}, 0, 1, gettext_noop("Cure Light Wounds")}, + {3, {D, P, P}, 1, 0, gettext_noop("Amnesia")}, + {3, {D, S, F}, 1, 0, gettext_noop("Confusion")}, + {6, {D, S, F, F, F, C2},0, 0, gettext_noop("Disease")}, + {5, {D, W, F, F, D2}, 1, 0, gettext_noop("Blindness")}, + {6, {D, W, S, S, S, P},0, 1, gettext_noop("Delayed Effect")}, + {6, {D, W, W, F, W, C2},0, 1, gettext_noop("Raise Dead")}, + {6, {D, W, W, F, W, D},0, 0, gettext_noop("Poison")}, + {3, {F, F, F}, 1, 0, gettext_noop("Paralysis")}, + {5, {F, P, S, F, W}, 0, 1, gettext_noop("Summon Troll")}, + {5, {F, S, S, D, D}, 0, 0, gettext_noop("Fireball")}, + {1, {P}, 0, 1, gettext_noop("Shield")}, + {1, {P2}, 0, 0, gettext_noop("SURRENDER")}, + {4, {P, D, W, P}, 0, 1, gettext_noop("Remove Enchantment")}, + {4, {P, P, W2, S2}, 1, 1, gettext_noop("Invisibility")}, + {4, {P, S, D, D}, 1, 0, gettext_noop("Charm Monster")}, + {4, {P, S, D, F}, 1, 0, gettext_noop("Charm Person")}, + {4, {P, S, F, W}, 0, 1, gettext_noop("Summon Ogre")}, + {8, {P, W, P, F, S, S, S, D},0,0, gettext_noop("Finger of Death")}, + {6, {P, W, P, W, W, C2},1, 1, gettext_noop("Haste")}, + {2, {S, D}, 0, 0, gettext_noop("Missile")}, + {3, {S, F, W}, 0, 1, gettext_noop("Summon Goblin")}, + {3, {S, P, F}, 0, 0, gettext_noop("Anti-Spell")}, + {7, {S, P, F, P, S, D, W},0,1, gettext_noop("Permanency")}, + {4, {S, P, P, C2}, 0, 1, gettext_noop("Time Stop")}, + {4, {S, S, F, P}, 1, 1, gettext_noop("Resist Cold")}, + {3, {S, W, D}, 1, 0, gettext_noop("Fear")}, + {4, {S, W, W, C2}, 0, 0, gettext_noop("Fire Storm")}, + {4, {W, D, D, C2}, 0, 0, gettext_noop("Lightning Bolt")}, + {3, {W, F, P}, 0, 0, gettext_noop("Cause Light Wounds")}, + {6, {W, F, P, S, F, W},0, 1, gettext_noop("Summon Giant")}, + {4, {W, P, F, D}, 0, 0, gettext_noop("Cause Heavy Wounds")}, + {3, {W, P, P}, 0, 0, gettext_noop("Counter-Spell")}, + {4, {W, S, S, C2}, 0, 0, gettext_noop("Ice Storm")}, + {4, {W, W, F, P}, 1, 1, gettext_noop("Resist Heat")}, + {3, {W, W, P}, 1, 1, gettext_noop("Protection From Evil")}, + {3, {W, W, S}, 0, 0, gettext_noop("Counter-Spell")}, + {1, {Gesture_KNIFE}, 0, 0, gettext_noop("stab")} }; #undef P --- spellcast-1.0.orig/main.c +++ spellcast-1.0/main.c @@ -3,6 +3,22 @@ and modified, as long as this copyright notice is retained. */ +/* Modified and took out bugs from the original version + * 1997 Ragnar Hojland Espinosa + * tech.support@redestb.es, ragnar@dfyre.ccon.net + */ + +/* + * Colour Modifications made by F.Hendrikx, 1998 + * To enable colour support, compile with flag + * -DCOLOUR (see Makefile for more details). + */ +/* + * Modificacions made by Javier Fernández-Sanguino Peña, 2000 + * all information on the window sizes has been moved to xwindow.h + * so multiple displays can be defined at compile time -DRESxxx + * (see Makefile for more details) + */ #include #include @@ -14,8 +30,14 @@ #include "patchlevel.h" #include "xspell.h" - -int win_wid, win_hgt; +#include +#define _(String) gettext (String) +#define gettext_noop(String) (String) + +int win_wid; +/* Now win_hgt has been moved to xwindow.h so we can define + * for each of the displays available */ +/* int win_hgt; */ struct player *players; int numplayers; @@ -24,12 +46,21 @@ game *gameval = NULL; static int defaultnum = 0; -static char *defaultnamelist[10] = {"White", "Black", "Red", "Green", "Blue", - "Yellow", "Orange", "Purple", "Grey", "Charteuse"}; +static char *defaultnamelist[10] = {gettext_noop ("White"),gettext_noop ("Black"), + gettext_noop ("Red"), gettext_noop ("Green"), gettext_noop ("Blue"), + gettext_noop ("Yellow"), gettext_noop ("Orange"), gettext_noop ("Purple"), + gettext_noop ("Grey"), gettext_noop ("Charteuse")}; +#ifdef COLOUR +char *namelist[MAXPLAYERS] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; +#else static char *namelist[MAXPLAYERS] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; +#endif static char *displist[MAXPLAYERS] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; static int genderlist[MAXPLAYERS] = {Gender_MALE, Gender_MALE, Gender_MALE, Gender_MALE, Gender_MALE, Gender_MALE, Gender_MALE, Gender_MALE}; +#ifdef COLOUR +long col_list[MAXPLAYERS] = {0, 0, 0, 0, 0, 0, 0, 0}; +#endif static struct query savequery = { 0, @@ -42,6 +73,7 @@ extern void redraw(); extern void XQueries(); +int main(argc, argv) int argc; char *argv[]; @@ -54,13 +86,19 @@ struct player *py; int movelist[MAXPLAYERS*2]; + /* i18n and i10n */ + setlocale (LC_MESSAGES, ""); + setlocale (LC_CTYPE, ""); + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + procs.proc_PrintMsg = PrintMsg; procs.proc_PrintMsg2 = PrintMsg2; procs.proc_PrintMsg3 = PrintMsg3; procs.proc_Queries = XQueries; if (argc==1) { - printf("usage: spellcast RemoteDisplay [ RemoteDisplay2 ... ]\n"); + printf(_("usage: spellcast RemoteDisplay [ RemoteDisplay2 ... ]\n")); exit(12); } @@ -83,26 +121,25 @@ } if (numplayers < 2) { - printf("You have listed only %d players!\n", numplayers); + printf(_("You have listed only %d players!\n"), numplayers); exit(12); } if (numplayers > MAXPLAYERS) { - printf("There is a maximum of %d players!\n", MAXPLAYERS); + printf(_("There is a maximum of %d players!\n"), MAXPLAYERS); exit(12); } players = (struct player *)malloc(sizeof(struct player) * numplayers); - win_wid = 832; + win_wid = WIN_WID; if (numplayers > 3) win_wid += (numplayers-3) * (2*GEST_SIZE + 20); - win_hgt = 750; turnstate = State_Init; for (ix=0; ixturn_active) switch (val) { case Turn_HASTE: - add_answer(py, "Enter your gestures for your Hastened move.", + add_answer(py, _("Enter your gestures for your Hastened move."), "", 1, 0, NULL, 0); break; case Turn_TIMESTOP: - add_answer(py, "Enter your gestures for your Time-Stopped move.", + add_answer(py, _("Enter your gestures for your Time-Stopped move."), "", 1, 0, NULL, 0); break; default: add_answer(py, -"Enter your gestures for this move, at the bottom of your gesture list.", +_("Enter your gestures for this move, at the bottom of your gesture list."), "", 1, 0, NULL, 0); break; } else switch (val) { case Turn_HASTE: - add_answer(py, "Other people are Hastened this turn.", + add_answer(py, _("Other people are Hastened this turn."), "", 1, 0, NULL, 0); break; case Turn_TIMESTOP: - add_answer(py, "You are frozen in time.", "", 1, 0, NULL, 0); + add_answer(py, _("You are frozen in time."), "", 1, 0, NULL, 0); break; default: - add_answer(py, "You are out of the game.", "", 1, 0, NULL, 0); + add_answer(py, _("You are out of the game."), "", 1, 0, NULL, 0); break; } redraw_column(py); @@ -156,6 +193,12 @@ redraw_queries_only(py, 0); /*update_statlist(py);*/ } +#ifdef LINESEP + /* F.Hendrikx, 1998 */ + PrintMsg("--------------------\n", gameval, &ignorerock); + /* TODO: this should be fixed to check the number of chars in + * the text window and put enough */ +#endif mainloop(); for (ix=0; ixdpy = XOpenDisplay(displist[pnum]); if (!py->dpy) { - fprintf(stderr, "spellcast: could not open display for player %d.\n", pnum); + fprintf(stderr, _("spellcast: could not open display for player %d.\n"), pnum); return 0; } py->scn = DefaultScreen(py->dpy); py->win = XCreateSimpleWindow(py->dpy, DefaultRootWindow(py->dpy), 100, 100, - win_wid, win_hgt, 1, BlackPixel(py->dpy, py->scn), + win_wid, WIN_HGT, 1, BlackPixel(py->dpy, py->scn), WhitePixel(py->dpy, py->scn)); - py->backpm = XCreatePixmap(py->dpy, py->win, win_wid, win_hgt, + py->backpm = XCreatePixmap(py->dpy, py->win, win_wid, WIN_HGT, DefaultDepth(py->dpy, py->scn)); py->backstore = 0; @@ -287,7 +338,7 @@ namelist[pnum] = name; } else { - namelist[pnum] = defaultnamelist[defaultnum]; + namelist[pnum] = _(defaultnamelist[defaultnum]); defaultnum++; } @@ -295,9 +346,9 @@ val = 0; if (strlen(namelist[pnum])<1) val = 1; - if (!strcmp(namelist[pnum], "nobody")) + if (!strcmp(namelist[pnum], _("nobody"))) val = 1; - if (!strcmp(namelist[pnum], "Nobody")) + if (!strcmp(namelist[pnum], _("Nobody"))) val = 1; for (ix=0; ixfont) { fprintf(stderr, -"spellcast: could not find font %s for player %d. Switching to %s...\n", +_("spellcast: could not find font %s for player %d. Switching to %s...\n"), fontname, pnum, BODYFONT_ALT); py->font = XLoadQueryFont(py->dpy, BODYFONT_ALT); if (!py->font) { fprintf(stderr, -"spellcast: could not find font %s for player %d. Switching to %s...\n", +_("spellcast: could not find font %s for player %d. Switching to %s...\n"), BODYFONT_ALT, pnum, BODYFONT_ALT2); py->font = XLoadQueryFont(py->dpy, BODYFONT_ALT2); if (!py->font) { - fprintf(stderr, "spellcast: could not find font %s for player %d.\n", + fprintf(stderr, _("spellcast: could not find font %s for player %d.\n"), BODYFONT_ALT2, pnum); return 0; @@ -356,7 +407,31 @@ py->whitegc = XCreateGC(py->dpy, py->win, GCForeground|GCBackground|GCFont, &gcvalues); XSetGraphicsExposures(py->dpy, py->whitegc, 0); +#ifdef COLOUR + /* F.Hendrikx, 1998 */ + + cmap = DefaultColormap(py->dpy, DefaultScreen(py->dpy)); + + col = XGetDefault(py->dpy, "spellcast", _("colour")); + if (col){ + fprintf(stderr, _("spellcast: font colour is %s\n"), col); + + if (XParseColor(py->dpy, cmap, col, &play_col)){ + + if (XAllocColor(py->dpy, cmap, &play_col)){ + + col_list[pnum] = play_col.pixel; + } + } + } + + /* if no colour found, then set to default black */ + + if (col_list[pnum] == 0){ + col_list[pnum] = BlackPixel(py->dpy, py->scn); + } +#endif init_bitmaps(py); init_xtext(pnum); init_query(py); @@ -375,8 +450,8 @@ { if (mrec->x+mrec->w >= win_wid-POPUP_ELBOW) mrec->x = win_wid-POPUP_ELBOW - mrec->w; - if (mrec->y+mrec->h >= win_hgt-POPUP_ELBOW) - mrec->y = win_hgt-POPUP_ELBOW - mrec->h; + if (mrec->y+mrec->h >= WIN_HGT-POPUP_ELBOW) + mrec->y = WIN_HGT-POPUP_ELBOW - mrec->h; if (mrec->x < POPUP_ELBOW) mrec->x = POPUP_ELBOW; if (mrec->y < POPUP_ELBOW) @@ -389,7 +464,7 @@ { py->backrec = (*mrec); if (py->backstore) { - printf("ERROR: backing store already on\n"); + printf(_("ERROR: backing store already on\n")); } py->backstore = 1; py->gotexpose = 0; @@ -401,7 +476,7 @@ struct player *py; { if (!py->backstore) { - printf("ERROR: backing store already off\n"); + printf(_("ERROR: backing store already off\n")); } py->backstore = 0; if (py->gotexpose) { --- spellcast-1.0.orig/patchlevel.h +++ spellcast-1.0/patchlevel.h @@ -1 +1 @@ -#define PATCHLEVEL "2" +#define PATCHLEVEL "4" --- spellcast-1.0.orig/xbutton.c +++ spellcast-1.0/xbutton.c @@ -5,15 +5,8 @@ #include "spelllist.h" #include "xspell.h" -#define BBOX_X (32) -#define BBOX_Y (576) -#define BBOX_W (2) -#define BBOX_H (1) - -#define BUTTON_W (150) -#define BUTTON_H (32) -#define BUTTON_CORNER (3) -#define BUTTON_SPACE (4) +#include +#define _(String) gettext (String) void draw_button(); @@ -47,11 +40,11 @@ draw_frame(py, &py->spelllist_rect); if (py->spelllist_way==1) - cx = "Spell List (left button: sorted by gesture)"; + cx = _("Spell List (left button: sorted by gesture)"); else if (py->spelllist_way==2) - cx = "Spell List (middle button: alphabetical sort)"; + cx = _("Spell List (middle button: alphabetical sort)"); else - cx = "Spell List (right button: reversed sort by gesture)"; + cx = _("Spell List (right button: reversed sort by gesture)"); DrawStringCentered(py, cx, py->spelllist_rect.x+py->spelllist_rect.w/2, py->spelllist_rect.y+4+py->lineheight); @@ -86,8 +79,8 @@ posy+jx*18, 1); } XDrawImageString(py->dpy, py->win, py->blackgc, posx+ix*300+8*(GEST_SMALL+1), - posy+jx*18+((GEST_SMALL+py->lineheight)/2)-2, spel->name, - strlen(spel->name)); + posy+jx*18+((GEST_SMALL+py->lineheight)/2)-2, _(spel->name), + strlen(_(spel->name))); } } @@ -166,30 +159,30 @@ switch (bnum) { case 0: if (!py->turn_active) - cx = "please wait...."; + cx = _("please wait...."); else if (turnstate == State_Top) { if (!py->turn_done) - cx = "End Move"; + cx = _("End Move"); else - cx = "Move ENDED."; + cx = _("Move ENDED."); } else if (turnstate == State_End) { if (!py->turn_done) - cx = "Quit"; + cx = _("Quit"); else - cx = "Wait...."; + cx = _("Wait...."); } else { if (!py->turn_done) - cx = "End Answers"; + cx = _("End Answers"); else - cx = "Answers ENDED."; + cx = _("Answers ENDED."); } DrawStringCentered(py, cx, BBOX_X+ix*BUTTON_W+BUTTON_W/2, BBOX_Y+jx*BUTTON_H+py->lineheight+1); break; case 1: - DrawStringCentered(py, "Spell List", BBOX_X+ix*BUTTON_W+BUTTON_W/2, + DrawStringCentered(py, _("Spell List"), BBOX_X+ix*BUTTON_W+BUTTON_W/2, BBOX_Y+jx*BUTTON_H+py->lineheight+1); break; default: @@ -242,7 +235,7 @@ return ms_SpellBtn; break; default: - printf("ERROR: unknown button thing!\n"); + printf(_("ERROR: unknown button thing!\n")); break; } } @@ -287,7 +280,7 @@ for (ix=0; ixsiquery.nlines; ix++) if (!py->answers[ix].done) { isok = 0; - strcpy(py->answers[ix].ans_str, ""); + strcpy(py->answers[ix].ans_str, _("")); /* ### set value to scroll to? */ } } --- spellcast-1.0.orig/xgest.c +++ spellcast-1.0/xgest.c @@ -23,7 +23,7 @@ #include "bvp.bm" #include "bvs.bm" #include "bvw.bm" - + #include "sc.bm" #include "sd.bm" #include "sd2.bm" @@ -37,10 +37,8 @@ #include "sw2.bm" #include "sdot.bm" -#define COLUMN_SIZE (8) -#define COLUMN_X (476) -#define COLUMN_Y (33) -#define GEST_SPACE (50) +#include +#define _(String) gettext (String) void init_bitmaps(py) struct player *py; @@ -116,6 +114,34 @@ py->spelllistbm[1][6] = 0; /* no double dots */ } +#ifdef COLOUR + +static long check_name(struct player *py, char *str) +{ + char *temp; + int i; + + for (i = 0; i < MAXPLAYERS; i++){ + temp = str; + + /* is there a name in this entry */ + + if (namelist[i]){ + + /* does it match the start of the string we were passed? */ + + if (strncmp(namelist[i], temp, strlen(namelist[i])) == 0){ + + return (col_list[i]); + } + } + } + /* return default colour */ + + return (BlackPixel(py->dpy, py->scn)); +} + +#endif void redraw_column(py) struct player *py; @@ -126,17 +152,28 @@ int posx, posy; int pnum = py-players; +#ifdef COLOUR + long col; +#endif + if (turnstate==State_Init) { return; } - for (ix=0; ixdpy, py->blackgc, col); +#endif + DrawStringCentered(py, NameOfBeing(gameval, QuVal_Target_Wizard, ix), posx+GEST_SIZE, posy-py->lineheight+py->ascent); - +#ifdef COLOUR + XSetForeground(py->dpy, py->blackgc, BlackPixel(py->dpy, py->scn)); +#endif if (turnstate!=State_Top) { SeeGesture(gameval, ix, pnum, buf, COLUMN_SIZE); gx=0; @@ -205,9 +242,9 @@ int posx, posy; draw_frame(py, &py->gesture_rect); - sprintf(gesture_prompt[0], "What gesture do you want to"); - sprintf(gesture_prompt[1], "make with your %s hand?", - py->gesture_hand?"right":"left"); + sprintf(gesture_prompt[0], _("What gesture do you want to")); + sprintf(gesture_prompt[1], _("make with your %s hand?"), + py->gesture_hand?_("right"):_("left")); XDrawImageString(py->dpy, py->win, py->blackgc, py->gesture_rect.x+20, py->gesture_rect.y+10+py->lineheight, gesture_prompt[0], strlen(gesture_prompt[0])); @@ -292,7 +329,7 @@ hit = (-1); if (hit==py->gesture_sel) - return; + return 0; if (py->gesture_sel != (-1)) { /* erase old */ @@ -315,6 +352,7 @@ XDrawRectangle(py->dpy, py->win, py->blackgc, posx+hitx*GEST_SPACE-2, posy+hity*GEST_SPACE-2, GEST_SIZE+3, GEST_SIZE+3); } + return 0; } int gesture_release(py, xpos, ypos, button) @@ -340,4 +378,5 @@ XCopyPlane(py->dpy, py->gesturebm[1][py->gesture_chosen[1]], py->win, py->blackgc, 0, 0, GEST_SIZE, GEST_SIZE, posx+GEST_SPACE, posy+(GEST_SPACE)*(COLUMN_SIZE-1), 1); + return 0; } --- spellcast-1.0.orig/etran.c +++ spellcast-1.0/etran.c @@ -1,9 +1,15 @@ #include #include +#include #include "handwave.h" #include "internal.h" + +#include +#define _(String) gettext (String) + + static char bigbuf[512]; void log_text(); @@ -16,7 +22,7 @@ strcpy(self->gamelog, ""); self->gamelog_pos = 0; - log_text(self, "Spellcast Game Transcript\n\n"); + log_text(self, _("Spellcast Game Transcript\n\n")); } void log_text(self, str) @@ -81,17 +87,17 @@ switch (self->turntype) { case Turn_TIMESTOP: - cx = " (Time Stop)"; + cx = _(" (Time Stop)"); break; case Turn_HASTE: - cx = " (Haste)"; + cx = _(" (Haste)"); break; default: cx = ""; break; } - sprintf(bigbuf, "\n\tTurn %d%s:\n", self->turn, cx); + sprintf(bigbuf, _("\n\tTurn %d%s:\n"), self->turn, cx); log_text(self, bigbuf); for (ix=0; ixnumplayers; ix++) { @@ -99,12 +105,12 @@ if (wiz->alive) { if (self->turnactive[ix]) { gnum = wiz->numgests-1; - sprintf(bigbuf, "%s (%d): %c %c\n", wiz->name, wiz->hitpoints, + sprintf(bigbuf, _("%s (%d): %c %c\n"), wiz->name, wiz->hitpoints, cheap_untranslate(wiz->gests[gnum].did[0]), cheap_untranslate(wiz->gests[gnum].did[1])); } else { - sprintf(bigbuf, "%s (%d): [no gestures]\n", wiz->name, + sprintf(bigbuf, _("%s (%d): [no gestures]\n"), wiz->name, wiz->hitpoints); } log_text(self, bigbuf); @@ -113,11 +119,11 @@ for (ix=0; ixnumcres; ix++) { struct creature *thud = &(self->cre[ix]); if (thud->alive) { - sprintf(bigbuf, "%s (%d)\n", thud->name, thud->hitpoints); + sprintf(bigbuf, _("%s (%d)\n"), thud->name, thud->hitpoints); log_text(self, bigbuf); } } - log_text(self, "\n"); + log_text(self, _("\n")); } #define ABBREVLEN (8) --- spellcast-1.0.orig/makelist.c +++ spellcast-1.0/makelist.c @@ -2,6 +2,9 @@ #include "handwave.h" #include "internal.h" +#include +#define _(String) gettext (String) + #define MARGIN_SIDE 72 #define MARGIN_TOP 72 #define LINEHEIGHT 16 @@ -19,40 +22,40 @@ switch (val) { case Gesture_PALM: *size = GEST_SPACE; - return "showpalm"; + return _("showpalm"); case Gesture_DIGIT: *size = GEST_SPACE; - return "showdigit"; + return _("showdigit"); case Gesture_FINGERS: *size = GEST_SPACE; - return "showfinger"; + return _("showfinger"); case Gesture_WAVE: *size = GEST_SPACE; - return "showwave"; + return _("showwave"); case Gesture_SNAP: *size = GEST_SPACE; - return "showsnap"; + return _("showsnap"); case Gesture_CLAPHALF: *size = GEST_SPACE; - return "showclap"; + return _("showclap"); case Gesture_PALM | Gesture_DOUBLE: *size = 17; - return "showpalm2"; + return _("showpalm2"); case Gesture_DIGIT | Gesture_DOUBLE: *size = 17; - return "showdigit2"; + return _("showdigit2"); case Gesture_FINGERS | Gesture_DOUBLE: *size = GEST_SPACE; - return "showfinger2"; + return _("showfinger2"); case Gesture_WAVE | Gesture_DOUBLE: *size = 17; - return "showwave2"; + return _("showwave2"); case Gesture_SNAP | Gesture_DOUBLE: *size = 17; - return "showsnap2"; + return _("showsnap2"); case Gesture_CLAPHALF | Gesture_DOUBLE: *size = GEST_SPACE; - return "showclap2"; + return _("showclap2"); default: *size = GEST_SPACE; return "nullact"; @@ -81,12 +84,12 @@ for (gx=0; gxlength; gx++) { val = spel->gests[gx]; cx = psroutine(val, &hop); - printf("%d %d %s\n", xval, ypos-1, cx); + printf(_("%d %d %s\n"), xval, ypos-1, cx); xval += hop; } - printf("%d %d moveto %d %d lineto stroke\n", xval+3, ypos+4, + printf(_("%d %d moveto %d %d lineto stroke\n"), xval+3, ypos+4, xpos+TEXT_MARGIN-4, ypos+4); - printf("%d %d moveto (%s) show\n", xpos+TEXT_MARGIN, ypos, spel->name); + printf(_("%d %d moveto (%s) show\n"), xpos+TEXT_MARGIN, ypos, spel->name); } } @@ -98,14 +101,14 @@ main() { - printf("/Times-Roman findfont 12 scalefont setfont\n"); - printf("0.5 setlinewidth\n"); + printf(_("/Times-Roman findfont 12 scalefont setfont\n")); + printf(_("0.5 setlinewidth\n")); dump_list(772 - MARGIN_TOP, 0, NULL); dump_list(772 - MARGIN_TOP, 264, alphasort); - printf("/Times-Bold findfont 14 scalefont setfont\n"); + printf(_("/Times-Bold findfont 14 scalefont setfont\n")); printf("306 752 moveto\n"); - printf("(SpellCast spell lists -- sorted by gesture and name) centershow\n"); - printf("\nshowpage\n"); + printf(_("(SpellCast spell lists -- sorted by gesture and name) centershow\n")); + printf(_("\nshowpage\n")); } --- spellcast-1.0.orig/xspell.h +++ spellcast-1.0/xspell.h @@ -1,3 +1,8 @@ +#ifndef _XSPELL_H +#define _XSPELL_H + +#include "xwindow.h" + struct maingame { int ignorestuff; }; @@ -106,11 +111,6 @@ extern int win_wid, win_hgt; -#define SCROLL_W (16) -#define GEST_SIZE (48) -#define GEST_SMALL (16) -#define FRAME_SHADOW (3) - /* values for py->mousestate */ #define ms_None (0) #define ms_Gesture (1) @@ -138,3 +138,10 @@ extern int turnstate; extern int movelist[]; extern int blinklevel; + +#ifdef COLOUR +extern char *namelist[]; +extern long col_list[]; +#endif + +#endif --- spellcast-1.0.orig/debian/changelog +++ spellcast-1.0/debian/changelog @@ -0,0 +1,162 @@ +spellcast (1.0-20) unstable; urgency=low + + * Remove debconf dependancy and debian/config as we don't use it anymore. + + -- Javier Fernandez-Sanguino Pen~a Thu, 1 Sep 2005 09:45:47 +0200 + +spellcast (1.0-19) unstable; urgency=low + + * Removed the debconf note and converted it into a NEWS file. + (Closes: #129771, #268159) + * Use debhelper compatibility version 4 + * Added Czech translation of the debconf note (Closes: #319854) + [ Unfortunately, since the NEWS file cannot be translated the translation + will not be seen. Sorry ] + + -- Javier Fernandez-Sanguino Pen~a Thu, 4 Aug 2005 19:32:45 +0200 + +spellcast (1.0-18) unstable; urgency=low + + * Added Danish translation provided by Morten Brix Pedersen (Closes: #240818) + * Fixed header of the program's spanish po file. + * Fixed lintian warnings + + -- Javier Fernandez-Sanguino Pen~a Thu, 26 Aug 2004 17:12:39 +0200 + +spellcast (1.0-17) unstable; urgency=low + + * Applied the patch provided by Michel Grentzinger to add po-debconf support + (Closes: #202427). + * Added french translation provided by Michel Grentzinger (Closes: #202428) + * Small changes in spanish es.po file. + + -- Javier Fernandez-Sanguino Pen~a Tue, 28 Oct 2003 01:39:39 +0100 + +spellcast (1.0-16) unstable; urgency=low + + * Added a rant on why spellcast is not GPL describing the issue + in the README.Debian file with more detail than the information + available in the copyright file. + + -- Javier Fernandez-Sanguino Pen~a Sun, 19 Oct 2003 11:57:37 +0200 + +spellcast (1.0-15) unstable; urgency=high + + * Moved to non-free due to licensing which was incorrectly + considered free by the previous maintainer. See + http://lists.debian.org/debian-legal/2003/debian-legal-200310/msg00136.html + (Closes: #214478) + + -- Javier Fernandez-Sanguino Pen~a Tue, 7 Oct 2003 20:46:59 +0200 + +spellcast (1.0-14) unstable; urgency=low + + * Added russian template (Closes: #137687) + * Fixed old man dialog in the manpage (Closes: #175164) + + -- Javier Fernandez-Sanguino Pen~a Mon, 20 Jan 2003 21:55:37 +0100 + +spellcast (1.0-13) unstable; urgency=low + + * Patched stupid.c with a patch provided by Dave A. Walker (it did not + build due to the gettext patch) + * Introduced some more translations in the spanish po file (still + incomplete) + + -- Javier Fernandez-Sanguino Pen~a Mon, 11 Nov 2002 00:30:36 +0100 + +spellcast (1.0-12) unstable; urgency=low + + * Fixed Build-Depends (Closes: #129618) + + -- Javier Fernandez-Sanguino Pen~a Thu, 17 Jan 2002 09:54:42 +0100 + +spellcast (1.0-11) unstable; urgency=low + + * Fixed debconf issues. + + -- Javier Fernandez-Sanguino Pen~a Tue, 15 Jan 2002 18:40:21 +0100 + +spellcast (1.0-10) unstable; urgency=low + + * Updated standards + * Removed suidregister + * Added Build-Depends + * Fixed URL in copyright file + * Added internationalisation support contributed by jorge@toa.magma.com.ni + (Jorge León) + * Included an (mostly unstralated) es.mo + * Added a note regarding the use of spellcast when X is not listening on the + tcp 6000 socket + * Fixed compilation so windows definitions are loaded in properly (Closes: #129360) + + -- Javier Fernandez-Sanguino Pen~a Tue, 15 Jan 2002 13:19:08 +0100 + +spellcast (1.0-9) unstable; urgency=low + + * Added setgid bit to all spellcast binaries so they can access the + scores. + * Fixed priority + + -- Javier Fernandez-Sanguino Pen~a Mon, 11 Jun 2001 21:47:02 +0200 + +spellcast (1.0-8) unstable; urgency=low + + * Moved /var/lib/games to /var/games (Closes: #92503) + + -- Javier Fernandez-Sanguino Pen~a Mon, 2 Apr 2001 08:50:41 +0200 + +spellcast (1.0-7) unstable; urgency=low + + * Taking up the package, new maintainer. + + -- Javier Fernandez-Sanguino Pen~a Sun, 27 Feb 2000 16:08:16 +0100 + +spellcast (1.0-6) unstable; urgency=low + + * Added new resolution (RESSMALL) taken from patched source code in the Internet + * Added the manpage converted to html for the documentation + * Added patch for colour made by Ragnar Hojland + + -- Javier Fernandez-Sanguino Pen~a Wed, 16 Feb 2000 08:33:07 -0800 + +spellcast (1.0-5) unstable; urgency=low + + * Modified spellcast so it can be played in resolutions under 1024, added + new targets to allow for it to compile and changed debian/rules (Fixes: #58001) + * New file explaining changes in README.resolution + * FIX: The changes in the source make it complain a lot + + -- Javier Fernandez-Sanguino Pen~a Tue, 15 Feb 2000 12:56:12 -0800 + +spellcast (1.0-4) unstable; urgency=low + + * Wow, it's been a year since I touched spellcast. + * Update man page to advocate xhost +hostname (Fixes: #41661) + * /usr/share/man for manpage, /usr/share/doc for docs. + * Update man page to reflect that Charm Monster really does + work on elementals, though it won't do much ;) + + -- Ben Gertzfield Wed, 20 Oct 1999 23:20:14 -0700 + +spellcast (1.0-3) unstable; urgency=low + + * After discussion with the author on adding an 'okay to sell' + clause to debian/copyright, I'm hereby moving spellcast to + main. Hooray! + + -- Ben Gertzfield Fri, 9 Oct 1998 18:26:50 -0700 + +spellcast (1.0-2) unstable; urgency=low + + * Use dh_fixperms -X to tell it to leave our poor little sgid + binary and transcript directory alone. Fixes #27429 + + -- Ben Gertzfield Mon, 5 Oct 1998 00:05:56 -0700 + +spellcast (1.0-1) unstable; urgency=low + + * Initial Release. + + -- Ben Gertzfield Wed, 23 Sep 1998 18:43:26 -0700 + --- spellcast-1.0.orig/debian/NEWS +++ spellcast-1.0/debian/NEWS @@ -0,0 +1,13 @@ +spellcast (1.0-2) unstable; urgency=low + + In order for the spellcast game to work, even if not using a remote + computer, your X server must be listening in port 6000. Debian default + installation (since the 'woody' distribution) disables X from doing this + by adding the "-nolisten tcp" option. You must change your configuration + (editing /etc/X11/gdm/gdm.conf, or /etc/X11/xinit/xserverrc depending on + how you start your X environment) to remove that option. + + Please note: This opens up a potential security risk in your system. + + -- Javier Fernandez-Sanguino Pen~a Thu, 4 Aug 2005 19:31:56 +0200 + --- spellcast-1.0.orig/debian/TODO +++ spellcast-1.0/debian/TODO @@ -0,0 +1,9 @@ + +- Add manpages for spellcast1024 and spellcast800 +- Make only one binary which can adjust itself to current window size +- Use toolkit (like gtk) instead of Xlib +- Separate in client and server +- Check that the colour is correctly set (patch of F. Hendrikx) +- Add new spells :) + +Javier Fernández-Sanguino Peña --- spellcast-1.0.orig/debian/control +++ spellcast-1.0/debian/control @@ -0,0 +1,14 @@ +Source: spellcast +Section: non-free/games +Priority: optional +Maintainer: Javier Fernandez-Sanguino Pen~a +Build-Depends: debhelper (>= 4.1.16), xlibs-dev +Standards-Version: 3.5.6 + +Package: spellcast +Architecture: any +Depends: gettext, ${shlibs:Depends}, ${misc:Depends} +Description: The classic hand-waving multi-player X game of spellcasting: + Spellcast is a classic game of might and magic for the X Windowing + System. Two or more wizards duke it out with spells, summons, and + plain old poking with fingers. Good for hour[s] of fun. --- spellcast-1.0.orig/debian/compat +++ spellcast-1.0/debian/compat @@ -0,0 +1 @@ +4 --- spellcast-1.0.orig/debian/README.debian +++ spellcast-1.0/debian/README.debian @@ -0,0 +1,91 @@ +spellcast for Debian +-------------------- + + Spellcast is a classic game of might and magic for the X Windowing + System. Two or more wizards duke it out with spells, summons, and + plain old poking with fingers. Good for hour[s] of fun. + + Currently, Debian provides two binaries of this game, the normal 'spellcast' + or 'spellcast1024' is the game adapted to be run in 1024x768 or greater + displays (remember that old UNIXes had these displays and the original + version was written for these), and also 'spellcast800' for displays + with a resolution of 800x600 or better. + + Work is needed to be able to have one only binary, maybe by rewritting + spellcast to use newer graphic libraries (like gtk). Feel free to contribute. + +FAQ: + +1.- Spellcast will not work when running on Debian woody! + +This is because the default behavior for X is to not listen for tcp connections. +You must remove "-nolisten tcp" in /etc/X11/gdm/gdm.conf or +/etc/X11/xinit/xserverc, depending on how you are launching +your X session. + +NOTE: Please be advised that this opens up a potential security risk in your +system. + +2.- Why isn't spellcast GPL the main author says it can be distributed +for free? + +Some sites, like linuxbert (see +http://linuxberg.inter.net.il/games/strategy_license.html), say that +Spellcast is GPL when in fact it is not. + +The answer is more complex than you would imagine. It all boils down to +the original author of the spellbinder game, Richard A. Bartle, who +asks any derivatives who states in http://mud.co.uk/richard/spellbnd.htm: + +"None of these products are commercial, which is just as well: I retain +full rights to the game, and if any commercial incarnation appears then I +want a royalty! I have no objection to people implementing or running +derivatives of the Spellbinder so long as they make no money from it, +though. Of course, if you are interested in publishing the game +commercially, email me a proposal! " + +Andrew Plotkin acknowledged Richard Bartle's demands and the README file +states (available in the /usr/share/doc/spellcast/copyright file) that +derivative works or source code cannot be sold without permission. + +This affects not only spellcast, but a number of derivatives of the +original spellbinder game (some of them are listed at the author's webpage): + + * Firetop Mountain (a Pbem implementation) at + http://www.gamerz.net/~fm/ which holds a specific license that does not + hinder commercial use (FM Public License at http://www.gamerz.net/~fm/LICENSE) + + * spellcast at Sun's Jave games-forge + https://spellcast.dev.java.net/, which holds a BSD license + + *'Spellcast: Deathmatch' a reimplementation with Java applets at + Sourceforge (http://spell.sourceforge.net/) which is GPL but has an + annotation for commercial use which + obviously does not make it GPL, http://spell.sourceforge.net/README.txt + + * "Spellcast", the X window version package in Debian + (http://www.eblong.com/zarf/spellcast.html) + + * wxSpellcast, a portable version (wxWindows) written by Dennis + Taylor (http://www.funkplanet.com/spellcast/), using the same ambiguous + "free" license from the X implementation. + + Of course, the original author of Spellbind can limit the use of the + original game (if trademarked) and of writing of the original rules. + But implementations of this game really don't need to be limited + for non-commercial use, it's just that some authors have accepted + Richard Bartle limitations on use. It is enlightening to read + http://www.wizards.com/default.asp?x=contactinfo/legal + which provides the legal information from Wizards of the Coast, + the provider fo the Magic The Gathering (R) game. The game is patented + and, so, they can limit implementations of the game. Spellbinder, however, + is not patented and thus, no implementation can be hindered by the + original author as long as no of his original work is copied (like, + for example, if the original rules were included verbatim in the + implementation) + +Ben Gertzfield , +Wed, 23 Sep 1998 18:43:26 -0700 +Javier Fernández-Sanguino Peña +Sun, 19 Oct 2003 11:57:15 +0200 + --- spellcast-1.0.orig/debian/copyright +++ spellcast-1.0/debian/copyright @@ -0,0 +1,50 @@ +This package was debianized by Ben Gertzfield che@debian.org on +Wed, 23 Sep 1998 18:43:26 -0700. + +It was downloaded from +http://www.eblong.com/zarf/spellcast.html + + +Original Copyright: + +The original paper-and-pencil version of this game was +created by Richard Bartle (76703.3042@compuserve.com). +This implementation is by Andrew Plotkin +(ap1i+@andrew.cmu.edu). It is copyright 1993 by Andrew +Plotkin. The source code may be freely copied, distributed, +and modified, as long as this copyright notice is retained. The +source code and any derivative works may not be sold for +profit without the permission of Andrew Plotkin and Richard +Bartle. + +After discussion with Richard Bartle and Andrew Plotkin via email, +they decided it was okay to charge a nominal copying fee if Spellcast +was sold as part of a CD set. Here's the relevant emails: + +From: RBartle@aol.com +Subject: Re: spellcast +To: che@debian.org +Date: 06 Oct 1998 02:42:27 -0700 + +BEN - + + >The license of a Debian component may not restrict any party from + >selling or giving away the software as a component of an aggregate + >software distribution containing programs from several different + >sources. The license may not require a royalty or other fee for such + >sale. +I have no problem with this. What I don't want is for some commercial game +company to produce a version of my game and not pay me royalties for it. +If it's part of a general collection of games, and it's OK by Andrew, then +yes, +his implementation can go on your distribution disc. + + >I believe the intention of the license to Spellcast as it is intends to make +it free + >software +Yes, but the intention was that it be TOTALLY free. If people sell it for +profit, then it's not totally free; if they charge for it to cover +distribution costs, +well, OK. + + --- spellcast-1.0.orig/debian/rules +++ spellcast-1.0/debian/rules @@ -0,0 +1,72 @@ +#!/usr/bin/make -f +# MAde with the aid of dh_make, by Craig Small +# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess. +# Some lines taken from debmake, by Cristoph Lameter. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +build: build-stamp +build-stamp: + dh_testdir + + + # Add here commands to compile the package. + (RESOLUTION=RES800 make; mv spellcast spellcast800;) + # This way we force it to recompile without cleaning + (make clean; RESOLUTION=RES1024 make; mv spellcast spellcast1024;) + + touch build-stamp + +clean: + dh_testdir + dh_testroot + rm -f build-stamp + + # Add here commands to clean up after the build process. + -$(MAKE) realclean + + dh_clean + +# Build architecture-independent files here. +binary-indep: build +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build +# dh_testversion + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Add here commands to install the files into debian/spellcast + $(MAKE) install DESTDIR=`pwd`/debian/spellcast + + dh_installdebconf + dh_installdocs README README.resolution debian/spellcast.man.html README.colour + dh_installexamples + dh_installmenu + dh_installcron + dh_installman spellcast.6 + dh_installchangelogs + dh_strip + dh_compress + dh_fixperms + chown games.games debian/spellcast/var/games/spellcast/ + chmod 0755 debian/spellcast/var/games/spellcast/ + chown games.games debian/spellcast/usr/games/spellcast + chmod 0755 debian/spellcast/usr/games/spellcast + chmod 0755 debian/spellcast/usr/games/spellcast800 + chmod 0755 debian/spellcast/usr/games/spellcast1024 + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +source diff: + @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary --- spellcast-1.0.orig/debian/dirs +++ spellcast-1.0/debian/dirs @@ -0,0 +1,4 @@ +usr/games +usr/share/man/man6 +usr/share/doc/spellcast +var/games/spellcast --- spellcast-1.0.orig/debian/docs +++ spellcast-1.0/debian/docs @@ -0,0 +1 @@ +README --- spellcast-1.0.orig/debian/package.suid +++ spellcast-1.0/debian/package.suid @@ -0,0 +1 @@ +usr/games/spellcast --- spellcast-1.0.orig/debian/menu +++ spellcast-1.0/debian/menu @@ -0,0 +1,2 @@ +?package(spellcast):needs="X11" section="Games/Strategy"\ + title="spellcast" command="/usr/games/spellcast" --- spellcast-1.0.orig/debian/postinst +++ spellcast-1.0/debian/postinst @@ -0,0 +1,20 @@ +#!/bin/sh + +# Movement of /var/lib/games to /var/games as per policy... +# (dpkg should give a warning to users the first time...) +# Movement should only be made when updating from <-8 to =>-8 +if [ -d /var/lib/games/spellcast ]; then + if [ ! -d /var/games/spellcast ] ; then + /bin/mkdir /var/games/spellcast + fi + # Are there any files here? + if [ ! -z "`/bin/ls /var/lib/games/spellcast/*`" ] ; then + /bin/mv /var/lib/games/spellcast/* /var/games/spellcast + fi + /bin/rmdir /var/lib/games/spellcast + /bin/chown -R games.games /var/games/spellcast + /bin/chmod 0755 /var/games/spellcast +fi + + +#DEBHELPER# --- spellcast-1.0.orig/debian/spellcast.man.html +++ spellcast-1.0/debian/spellcast.man.html @@ -0,0 +1,893 @@ + +
+Spellcast - The manual. +
+ +

Spellcast - The manual.

+
+NAME
+     spellcast  -  a game of duelling wizards
+
+SYNOPSIS
+     spellcast remotedisplay [ remotedisplay ... ]
+
+     One game window will appear on the default  display  (deter-
+     mined  by the contents of the DISPLAY environment variable.)
+     The second will appear on  remotedisplay,  which  should  be
+     either  an  internet host name or a complete X display iden-
+     tifier (host:0.0, for example.) (If  just  a  host  name  is
+     given,  display  0  and  screen  0  are  assumed.)  If  more
+     remotedisplay arguments  are  supplied,  additional  windows
+     will  appear on those screens, and you will have a game with
+     three or more players.
+
+     All other machines must add your machine to their  X  access
+     lists, using xhost +.
+
+     There is a maximum of seven remotedisplay arguments  --  ie,
+     an eight-player game.
+
+RESOURCES
+     The game makes use of two X resources:
+
+     spellcast*name: namestring
+     Sets the name used for your wizard. If you do not  set  this
+     resource,  the  game  assigns  the  names  "White", "Black",
+     "Red", and so forth.
+     By default, each character is male. You can specify a gender
+     by giving a namestring of the form
+         name:f for a female character,
+         name:m for a male,
+         name:n for a character whose gender is ambiguous or  not
+         well-defined in human terms, and
+         name:x for a genderless character.
+
+     spellcast*font: fontname
+     The font used for all text and labels in  the  game  window.
+     This  should  not  be  larger than about 12-point, or things
+     will start to overflow their boundaries.
+
+INTRODUCTION
+     This is a game concerning the imaginary conflict between two
+     or more powerful wizards in a duel of sorcery. The opponents
+     perform magical gestures with their hands  to  create  their
+     supernatural  weapons -- spells. Some are so potent as to be
+     able to blind a man, call  forth  terrifying  creatures,  or
+     even  kill  the  unfortunate victim instantly.  Consequently
+     each wizard must rely on his own cunning to be able to  time
+     enough   defensive   spells   to  avoid  the  brunt  of  his
+     adversary's attack, yet force in sufficient offensive spells
+     of  his own to crack the magical armour of his opponent, and
+     kill the wizard outright. The inventor wishes to state  that
+     he  has  never  been involved in a magical duel but would be
+     interested to discover how realistic the game is  for  those
+     who have...
+
+THE TURN
+     In a turn, each wizard can either gesture with his hands for
+     part  of  a  spell, stab with his knife, or do nothing. They
+     use both hands, and the hands can act  either  independently
+     or  in  concert.  Monsters  cannot make magical gestures but
+     will obey their masters' commands exactly  --  although  the
+     identity  of the master could change as a result of enchant-
+     ment. Since wizards are trained intelligent humans, they are
+     able  to  gesture and attack, using both hands independently
+     or in conjunction. Each monster, being an  untrained,  unin-
+     telligent  biped,  attacks the same way every time and picks
+     whichever victim its  master  decides.  As  a  result,  only
+     wizards  can  gesture  and  cast spells.  Players personally
+     acquainted with monsters who wish to vouch for their ability
+     to cast spells are requested to keep quiet.
+
+     After choosing his or her gestures, each wizard must make  a
+     certain  number  of  decisions  --  choosing targets for his
+     spells, ordering his monsters to attack particular  targets,
+     deciding  the effects of certain spells, and so forth. After
+     all players have chosen their gestures and made  any  neces-
+     sary  decisions,  the  effects of all spells and attacks are
+     resolved simultaneously. The next turn then begins.
+
+THE GAME WINDOW
+     The spellcast window is divided into seven sections.
+
+     The text window
+     This is a large rectangle in the upper left side of the win-
+     dow.   It  describes what happens in the duel, blow by blow.
+     There is a scroll bar on the left side of the text window.
+
+     The gesture history list
+     This is several columns of small squares in the upper  right
+     side  of  the window -- one pair of columns for each player.
+     The player's names are listed at the tops of the columns.
+
+     Each column lists the recent gestures made by each  player's
+     left  and  right  hands. The most recent gestures are at the
+     bottom; as more turns pass, the columns scroll upwards. Each
+     square may show a spell-gesture, a knife stab, or no gesture
+     (an empty square).  There may also be a  'disruption'  icon,
+     indicating   that   an  'anti-spell'  has  interrupted  that
+     wizard's gestures at that point, or a 'fog' icon, indicating
+     that  you  could not see that gesture (because of blindness,
+     for example.)
+     Note that everyone's columns in  the  history  list  do  not
+     necessarily  scroll  at  the  same rate. If one player makes
+     extra gestures (because of a 'time-stop'  or  'haste'),  his
+     column will scroll up extra spaces.  Do not assume that ges-
+     tures that appear to be lined up actually were performed  at
+     the same time.
+
+     You also use the gesture history list  to  enter  your  ges-
+     tures.  At  the  beginning  of  each  turn, the bottom (most
+     recent) gestures in your column will be empty.  (The  bottom
+     gestures in your opponent's column will be fogged, since you
+     cannot see his gestures until you both finish choosing.)  If
+     you  move the mouse into one of your bottom gesture squares,
+     and hold down the left mouse  button,  a  pop-up  menu  will
+     appear,  listing  the possible gestures with that hand. When
+     you have chosen gestures for  both  hands,  press  the  "End
+     Move" button.
+
+     The status window
+     This is the small window just below the gesture columns.  It
+     lists  the  name  and  status  of  every living being in the
+     arena. Your name is at the top; your opponent's names are on
+     successive lines. Names of monsters are indented, and listed
+     below the wizards who control them. (Monsters who are uncon-
+     trolled  are  indented  and  listed at the top of the status
+     window -- this occurs mostly in three-player  game  where  a
+     wizard  has  summoned  a  monster and then died.) There is a
+     scroll bar on the window, in case you manage  to  have  more
+     beings than will fit.
+
+     After each name is the number of hit points that  being  has
+     left.  After that, there may be some letters indicating that
+     certain spells are in effect:
+             I: invisible
+             H: resistant to heat
+             C: resistant to cold
+             P: protection from evil
+             b: blind
+             d: diseased
+             p: poisoned
+
+     Speech window
+     This is a narrow window, one line  tall,  below  the  status
+     window.  Anything you type will appear here (the cursor need
+     not be in the speech window.) When you hit Return, the  mes-
+     sage  you  have typed will appear in each player's text win-
+     dow.
+
+     The common Emacs editing keys  will  work:  ctrl-F,  ctrl-B,
+     Delete, ctrl-A, ctrl-E, ctrl-K.
+
+
+     Spell List button
+     This is a button labelled "Spell List", underneath the  text
+     window.  If you press and hold the mouse button on this but-
+     ton, a pop-up window will appear, listing all the spells and
+     the gestures that produce them.
+
+     If you use the left mouse button, the  spell  list  will  be
+     sorted  by  gesture. If you use the middle mouse button, the
+     list will be sorted alphabetically by spell name. If you use
+     the  right  mouse  button,  the  list  will be sorted by the
+     reversed gesture sequence -- all the spells that end with  a
+     clap,  then  all  the  spells  that end with a digit, and so
+     forth.  This is useful for looking up your  opponent's  ges-
+     tures to see what he might be producing.
+
+     End Move / End Answers button
+     This is a button labelled "End Move",  underneath  the  text
+     window.   You should click it when you are finished entering
+     your gestures at the  start  of  the  turn.  If  the  button
+     changes  to read "Move ENDED", then you should wait for your
+     opponent to finish entering his gestures.
+
+     When the last player presses the "End Move" button, the game
+     will  determine  which players need to make decisions (about
+     spell targets or other matters.) The decisions you  need  to
+     make  will  be listed in the questions window below, and the
+     "End Move" button will change to read  "End  Answers".  When
+     you  are  finished  answering, press the button, and it will
+     change to "Answers ENDED".
+
+     If at any time the button reads "please wait...",  then  you
+     have  nothing to do but wait. (This may be because there are
+     no decisions you have to make this  turn,  or  because  your
+     opponent is taking an extra turn because of a 'time stop' or
+     something similar.) When your opponent is finished, he  will
+     click his "End" button and the game will proceed.
+
+     When the duel is  over,  this  button  will  change  to  say
+     "Quit".  When  all players have pressed it, the windows will
+     be removed and the program will exit.
+
+     Question window
+     This is the wide rectangle at  the  bottom  of  the  screen.
+     Whenever the game has decisions for you to make, it will put
+     them in this window, one per line. (There is a  scroll  bar,
+     in  case there are more questions than lines.) Move the cur-
+     sor onto a question and hold down the mouse button to get  a
+     pop-up menu listing the possible answers.
+
+     You must have answers to all the questions before you  click
+     the  "End  Answers"  button.  In  some  cases, there will be
+     default answers already listed. You may change the answer or
+     leave it alone.
+
+GAME TRANSCRIPTS
+     At the end of the game, in addition to  his  "Quit"  button,
+     the  player  who  started the game will see the question "Do
+     you want to save a transcript of this game?" If  he  answers
+     "yes"  before  hitting "Quit", the program will store a text
+     transcript of the game in  a  temporary  directory  (usually
+     /tmp, unless your environment is configured otherwise.) This
+     transcript will show all gestures made by  each  player,  as
+     well  as  all  the  text  of the game, as seen by an outside
+     observer. Everything said by any of the players will also be
+     in  the transcript, including comments made after the end of
+     the game. The filename of the transcript will be printed  on
+     the standard output when all players have quit.
+
+GESTURES
+
+     Spells are created by sequences of gestures  made  with  the
+     hands.   There  are five single-handed gestures: the fingers
+     spread , the palm facing forward,, the snap , the
+     wave  and  the pointing digit . Some spells use two-
+     handed gestures, which must be done simultaneously with both
+     hands to be valid. The most common two-handed gesture is the
+     clap , but the double digit , double wave ,  and
+     double  snap  are also used.  The other things which can
+     be done with the hand are the non-gestures: the  knife  stab
+     "k" and nothing " ".
+     (In the game, the gestures are represented by images of  the
+     hands  in  the  various  positions.  The  single-letter  and
+     parenthesis-letter abbreviations are used only to make  this
+     man page readable.)
+
+     To cast a spell, gestures are put in an order characteristic
+     of  a spell. A list of spells (including the gestures needed
+     for them) is given later.  For example, 3 finger gestures on
+     consecutive turns  initiates a 'paralysis' spell.The
+     uniqueness of the game, however, is  that  gestures  can  be
+     made to operate in more than one spell, provided that:
+         a) the gestures have been made in the  correct  sequence
+         without interruption;
+         b) not more than one spell is created per gesture;
+         c) all gestures for one spell are  made  with  the  same
+         hand.
+
+     For instance, the left hand could cast the above and
+     could be followed byin the next 4 turns to finish
+     off a 'fireball' spell  as the last 5 gestures
+     are those associated with that spell. Another alternative is
+     to simply perform another F for a second paralysis spell, as
+     the last 3 gestures are still . Thus, it is apparent
+     that if spells are used in a wise manner and overlap a  lot,
+     the  overall  number  of gestures needed to cast them can be
+     cut quite dramatically.
+
+     If a gesture can be construed to create two or  more  spells
+     then  the  caster must choose which one he wants to use. For
+     example, the last two gestures of a 'finger  of  death'  are
+     the  same  as 'missile', yet only on odd occasions would the
+     latter be used. Another example of the one-spell-per-gesture
+     concept is the following:
+
+     Right hand:   Last 4 gestures form 'invisibility'
+     Left hand:    Last 3 gestures form 'counter-spell'
+
+     The trouble here is  the  'invisibility'  spell  needs  both
+     hands  to perform certain gestures. However, since the final
+     S of the left hand cannot complete two spells  it  is  clear
+     that a  choice  must be made  between  the   of the
+     'counter-spell' and the  of the invisibility. The
+     caster  must  choose one spell if the gestures are completed
+     in the correct sequence. Most spells  can  be  shot  off  to
+     nowhere  if  not  required, but some cannot be; for example,
+     'fire storm', which gets you no matter where it is released.
+     Some  of  the  larger  spells have smaller ones incorporated
+     within.
+
+     Spells can be aborted any way along their development simply
+     by  performing a gesture with the hand doing the spell which
+     is not one needed for that spell. There is no penalty,  save
+     having wasted some time. Note that no spells contain "stab",
+     "nothing", (half of a clap)  and  consequently  after
+     pursuing  one  of  these  alternatives, any spell must start
+     from scratch. Note also that wizards only  have  one  dagger
+     each,  so  they cannot stab with both hands at the same time
+     (although they can change hands for stabbing without wasting
+     time.) Such are the disadvantages of physical violence...
+
+     Certain spells cancel each other if they take effect  simul-
+     taneously.  An  obvious  example  is  'finger  of death' and
+     'raise dead'. Cancellation occurs when the subject  for  the
+     spells concerned is the same person, although there are some
+     of the heat versus cold variety which don't care who is  the
+     subject. Other spells which cancel harmlessly are mostly the
+     enchantments, which direct that something be done which  may
+     be  impossible  to obey due to some contradiction (e.g.  you
+     cannot both repeat last turn's gestures and  give  a  random
+     gesture  with  one  hand, as you would if the subject of the
+     spells 'amnesia' and 'confusion' at once).
+
+     Since spells detonate simultaneously, there is  occasionally
+     confusion  over spells which don't cancel, yet which seem to
+     depend on which happened first. The best example is  when  a
+     monster  is  created  and, on the same turn, hit by a 'fire-
+     ball', or something else sufficient to kill it.  Since  both
+     are  simultaneous,  the monster will attack that turn whilst
+     being destroyed. (There are some exceptions explicitly  men-
+     tioned,  for  example  ice  elementals  in  'ice  storm', or
+     'counter-spell' / 'dispel magic' against all other spells.)
+
+     Another example of a seeming conflict is when someone who is
+     resistant  to fire is the subject of both a 'remove enchant-
+     ment' and 'fireball'; the  enchantment  is  removed  as  the
+     fireball  explodes  (since  they are simultaneous) hence the
+     poor victim is fried. If, instead, he were not resistant  to
+     fire  and was hit by a 'resist fire' and 'fireball' at once,
+     then he would start to resist fire as the fireball  exploded
+     and thus be saved.
+
+     Before the battle commences, the  referee  casts  a  'dispel
+     magic'  followed  by an 'anti-spell' at each of the wizards.
+     This is so that they cannot commence gesturing  prematurely.
+     Thus  being resistant to fire in your last battle doesn't do
+     you any good in the next.
+
+WINNING
+     Each wizard can sustain 14 points of damage, but on the 15th
+     or  above  he  dies and the surviving wizard is declared the
+     winner.  Simultaneous death is  a  posthumous  draw.  Damage
+     given  to  wizards  and monsters is cumulative (so you don't
+     have to do it all in one go!) Dead monsters take no  further
+     part in the game.
+
+     There is another alternative to  being  killed,  namely  the
+     'surrender'.  This  is not a spell, but a pair of P gestures
+     made by both hands at the same time.   If  any  wizard  does
+     this (accidentally or deliberately), he has surrendered, and
+     will be eliminated from the game at the end  of  that  turn.
+     See the end of the spell list for details.
+
+SPELLS
+     There now follows, in four sections, a list  of  the  spells
+     which may be cast.
+
+     Protection spells
+
+     'Shield': 
+
+     This spell protects the subject from all attacks  from  mon-
+     sters  (that  is,  creatures  created by a summoning spell),
+     from 'missile' spells, and from stabs by wizards. The shield
+     lasts for that turn only, but one shield will cover all such
+     attacks made against the subject that turn.
+
+
+     'Remove enchantment': 
+
+     If the subject of this spell is currently being affected  by
+     any  of  the  spells  in  the  "enchantments" section, or if
+     spells from that section are cast at him at the same time as
+     the  remove  enchantment,  then  all  such  spells terminate
+     immediately (although  their  effect  for  that  turn  might
+     already  have  passed.) For example, the victim of a 'blind-
+     ness' spell would not be able to  see  what  his  opponent's
+     gestures  were  on  the turn that his sight is restored by a
+     'remove enchantment'. Note  that  the  'remove  enchantment'
+     affects  all  enchantments  whether the caster wants them to
+     all go or not. A second effect of the spell  is  to  destroy
+     any  monster upon which it is cast, although the monster can
+     attack in that turn.
+
+     'Magic mirror': 
+
+     Any spell cast at the subject of  this  spell  is  reflected
+     back  at  the  caster of that spell for that turn only. This
+     includes spells like 'missile' and 'lightning bolt' but does
+     not  include  attacks  by  monsters already in existence, or
+     stabs from wizards. Note that certain  spells  are  cast  by
+     wizards usually upon themselves (e.g.  spells from this sec-
+     tion and the "Summons" section); the mirror has no effect on
+     these spells.  It is countered totally, with no effect what-
+     soever, if the subject is the simultaneous subject of either
+     a  'counter-spell'  or  'dispel  magic'. It has no effect on
+     spells which affect more than  one  person,  such  as  'fire
+     storm'.  Two  mirrors cast at someone simultaneously combine
+     to form a single mirror. If a spell is reflected from a mir-
+     ror  back  at  a  wizard  who  also  has a mirror, the spell
+     bounces back and forth until it falls apart.
+
+     'Counter-spell':  or 
+
+     Any other spell cast upon the subject in the same  turn  has
+     no  effect  whatever.  In  the  case of blanket-type spells,
+     which affect more  than  one  person,  the  subject  of  the
+     'counter-spell'  alone  is  protected.  For example, a 'fire
+     storm' spell would not affect a wizard if  that  wizard  was
+     simultaneously  the subject of a 'counter-spell', but every-
+     one else would be affected as usual (unless they  had  their
+     own  protection.)  The  'counter-spell'  will cancel all the
+     spells cast at the subject for that turn, including  'remove
+     enchantment'  and  'magic mirror', but not 'dispel magic' or
+     'finger of death'. It will combine with another spell of its
+     own  type  for  the  same  effect  as  if it were alone. The
+     'counter-spell' will also act as a 'shield' on its  subject,
+     in  addition  to  its  other  properties.  The spell has two
+     alternative gesture sequences, either of which may  be  used
+     at any time.
+     'Dispel magic': 
+
+     This spell acts as  a  combination  of  'counter-spell'  and
+     'remove  enchantment',  but its effects are universal rather
+     than limited to the subject of the spell. It will  stop  any
+     spell cast in the same turn from working (apart from another
+     'dispel magic' spell which combines with  it  for  the  same
+     result),  and  will  remove all enchantments from all beings
+     before they have effect. In addition, all monsters are  des-
+     troyed, although they can attack that turn. 'Counter-spells'
+     and 'magic mirrors'  have  no  effect.  Like  the  'counter-
+     spell',  it also acts as a 'shield' for its subject. 'Dispel
+     magic' will not dispel stabs or surrenders, since  they  are
+     not spells (although the 'shield' effect may block a stab.)
+
+     'Raise dead': 
+
+     The subject of this spell is usually a recently  dead  human
+     or  monster  corpse  (it  will not work on elementals, which
+     dissipate when destroyed.) When the spell is cast,  life  is
+     instilled  back  into the corpse and any damage which it has
+     sustained is cured until the owner  is  back  to  his  usual
+     state of health.  A 'remove enchantment' effect is also man-
+     ifest so any 'diseases' or  'poisons'  will  be  neutralized
+     (plus  any  other enchantments). The subject will be able to
+     act as normal immediately, so that next turn he can gesture,
+     fight,  etc.  If  the subject is a monster, it will be under
+     the control of the wizard who raised it, and it will be able
+     to attack that turn.
+     If the spell is cast on a live  individual,  the  effect  is
+     that of a 'cure wounds' recovering 5 points of damage, or as
+     many as have been sustained if less than 5.  In  this  case,
+     'diseases',   'poisons',  and  other  enchantments  are  not
+     removed.
+     This is the  only  spell  which  affects  corpses  properly;
+     therefore,  it cannot be stopped by a 'counter-spell', since
+     'counter-spell' can only be cast on living beings. A 'dispel
+     magic'  spell will stop it, since that affects all spells no
+     matter what  their  subject.   Once  alive  the  subject  is
+     treated as normal.
+
+     'Cure light wounds': 
+
+     If the subject has received damage then he  is  cured  by  1
+     point  as if that point had not been inflicted. (Recall that
+     all spells  are  resolved  simultanously;  if  a  wizard  is
+     suffers  his  15th point of damage at the same time as he is
+     affected by 'cure light wounds', he will remain  alive  with
+     14  points  of damage at the end of the turn.) The effect is
+     not removed by a 'dispel magic' or 'remove enchantment'.
+
+
+     'Cure heavy wounds': 
+
+     This spell is the  same  as  'cure  light  wounds'  for  its
+     effect,  but  2  points of damage are cured instead of 1, or
+     only 1 if only 1 had been sustained. A side effect  is  that
+     the  spell will also cure a disease. (Note that 'raise dead'
+     on a live individual won't).
+
+     Summons spells
+
+     'Summon Goblin': 
+
+     This spell creates a goblin under the control of the  wizard
+     upon  whom  the spell is cast. The goblin can attack immedi-
+     ately and its victim can be any any wizard or other  monster
+     the  controller  desires.  The goblin does 1 point of damage
+     to its victim per turn and is destroyed  after  1  point  of
+     damage is inflicted upon it.
+
+     'Summon Ogre': 
+
+     This spell is the same as  'summon  goblin',  but  the  ogre
+     created  inflicts  and  is  destroyed  by 2 points of damage
+     rather than 1.
+
+     'Summon Troll': 
+
+     This spell is the same as 'summon  goblin',  but  the  troll
+     created  inflicts  and  is  destroyed  by 3 points of damage
+     rather than 1.
+
+     'Summon Giant': 
+
+     This spell is the same as 'summon  goblin',  but  the  giant
+     created  inflicts  and  is  destroyed  by 4 points of damage
+     rather than 1.
+
+     'Summon Elemental': 
+
+     This spell creates either a fire elemental or an ice elemen-
+     tal,  at the discretion of the wizard upon whom the spell is
+     cast (after he has seen all the gestures made that turn.)
+
+     Elementals must be cast at someone and cannot be "shot  off"
+     harmlessly at some inanimate object. The elemental will, for
+     that turn and until destroyed,  attack  everyone  (including
+     its  owner,  and other monsters), causing 3 points of damage
+     per turn. Only wizards and monsters who are resistant to the
+     elemental's  element  (heat or cold), or who have a 'shield'
+     or a spell with a 'shield' effect, are safe.  The  elemental
+     takes  3  points of damage to be killed but may be destroyed
+     by spells of the opposite type (e.g. 'fire  storm',  'resist
+     cold'  or  'fireball'  will kill an ice elemental), and will
+     also neutralize the cancelling spell.  Elementals  will  not
+     attack  on  the  turn they are destroyed by such a spell. An
+     elemental will also be engulfed and destroyed by a storm  of
+     its  own  type  but, in such an event, the storm is not neu-
+     tralized although the elemental still  does  not  attack  in
+     that  turn.   Two  elementals of the opposite type will also
+     destroy each other before attacking, and  two  of  the  same
+     type will join together to form a single elemental of normal
+     strength. If there are two opposite storms and an elemental,
+     or two opposite elementals and one or two storms, all storms
+     and elementals cancel each other out.
+
+     Damaging Spells
+
+     'Missile': 
+
+     This spell creates a material object of hard substance which
+     is  hurled towards the subject of the spell and causes him 1
+     point of damage. The spell is  thwarted  by  a  'shield'  in
+     addition  to  the  usual 'counter-spell', 'dispel magic' and
+     'magic mirror' (the latter causing it to hit whoever cast it
+     instead).
+
+     'Finger of Death': 
+
+     Kills the subject stone dead. This spell is so powerful that
+     it  is  unaffected  by a 'counter-spell', although a 'dispel
+     magic' spell cast upon the final gesture will stop  it.  The
+     usual  way  to prevent being harmed by this spell is to dis-
+     rupt it during casting -- using an 'anti-spell',  for  exam-
+     ple.
+
+     'Lightning Bolt':  or 
+
+     The subject of this spell is hit by a bolt of lightning  and
+     sustains  5  points of damage. Resistance to heat or cold is
+     irrelevant. There  are  two  gesture  combinations  for  the
+     spell,  but the shorter one may be used only once per battle
+     by any wizard. The longer one may be used  without  restric-
+     tion. A 'shield' spell offers no defence.
+
+     'Cause Light Wounds': 
+
+     The subject of this spell is inflicted with 2 points of dam-
+     age.  Resistance to heat or cold offers no defence. A simul-
+     taneous 'cure light wounds' does not cancel  the  spell;  it
+     only  heals  one  of the points of damage. A 'shield' has no
+     effect.
+
+     'Cause Heavy Wounds': 
+
+     This has  the  same  effect  as  'cause  light  wounds'  but
+     inflicts 3 points of damage instead of 2.
+
+     'Fireball': 
+
+     The subject of this spell is hit by a ball of fire, and sus-
+     tains  5 points of damage unless he is resistant to fire. If
+     at the same time an 'ice storm' prevails, the subject of the
+     'fireball'  is  instead not harmed by either spell, although
+     the storm will affect others as normal. If  directed  at  an
+     ice  elemental,  the  fireball will destroy it before it can
+     attack.
+
+     'Fire storm': 
+
+     Everything not resistant to heat sustains 5 points of damage
+     that turn. The spell cancels wholly, causing no damage, with
+     either an 'ice storm' or an ice elemental. It  will  destroy
+     but  not be destroyed by a fire elemental. Two 'fire storms'
+     act as one.
+
+     'Ice storm': 
+
+     Everything not resistant to cold sustains 5 points of damage
+     that turn. The spell cancels wholly, causing no damage, with
+     either a 'fire storm' or a fire elemental;  it  will  cancel
+     locally with a 'fireball', sparing the subject of the 'fire-
+     ball' but nobody else.  It will destroy but not be destroyed
+     by an ice elemental. Two 'ice storms' act as one.
+
+     Enchantments
+
+     'Amnesia': 
+
+     If the subject of this spell is a wizard, next turn he  must
+     repeat identically the gestures he made in the current turn,
+     including "nothing" and "stab" gestures.  If the subject  is
+     a  monster  it will attack whoever it attacked this turn. If
+     the subject is simultaneously the subject of any of  'confu-
+     sion',  'charm  person',  'charm  monster',  'paralysis'  or
+     'fear' then none of the spells work.
+
+     'Confusion': 
+
+     If the subject of this spell is a wizard, next turn  one  of
+     his  gestures  will  be changed randomly. Either his left or
+     his right hand (50% chance of either) will perform  a  half-
+     clap,  palm,  digit,  fingers, snap, or wave (chosen at ran-
+     dom). (Recall that a one-handed clap is useless  unless  the
+     other  hand  also  attempts  to clap.) If the subject of the
+     spell is a monster, it attacks at random that turn.  If  the
+     subject  is  also  the  subject  of any of 'amnesia', 'charm
+     person', 'charm monster', 'paralysis' or 'fear', none of the
+     spells work.
+
+     'Charm Person': 
+
+     Except for cancellation with other enchantments, this  spell
+     only  affects  wizards.  When  the spell is cast, the caster
+     tells the subject which of his hands will be controlled;  in
+     the  following turn, the caster chooses the gesture he wants
+     the subject's chosen hand to perform. This could be  a  stab
+     or  nothing.  If  the  'charm  person' spell reflects from a
+     'magic mirror' back at its caster, the subject of the mirror
+     assumes  the role of caster and controls down his opponent's
+     gesture. If the subject  is  also  the  subject  of  any  of
+     'amnesia',  'confusion',  'charm  monster',  'paralysis'  or
+     'fear', none of the spells work.
+
+     'Charm Monster': 
+
+     Except for cancellation with other enchantments, this  spell
+     only  affects  monsters (but not elementals). Control of the
+     monster is transferred  to  the  caster  of  the  spell  (or
+     retained  by  him)  as  of this turn; i.e., the monster will
+     attack whosoever its new controller dictates from that  turn
+     onwards  including that turn. Further charms are, of course,
+     possible, transferring as before.  If  the  subject  of  the
+     charm is also the subject of any of: 'amnesia', 'confusion',
+     'charm person', 'fear' or 'paralysis', none  of  the  spells
+     work.
+
+     'Paralysis': 
+
+     If the subject of the spell is a wizard, then  on  the  turn
+     the  spell  is  cast, after gestures have been revealed, the
+     caster selects one of the wizard's hands; on the  next  turn
+     that hand is paralyzed into the position it is in this turn.
+     If the wizard already had a paralyzed hand, it must  be  the
+     same hand which is paralyzed again. Most gestures remain the
+     same (including "stab" and "nothing"), but if the hand being
+     paralyzed is performing a C, S, or W it is instead paralyzed
+     into F, D, or P respectively.  A favourite ploy is  to  con-
+     tinually  paralyze  a  hand  (F-F-F-F-F-F etc.) into a non-P
+     gesture and then set a monster on the subject so that he has
+     to  use  his  other hand to protect himself, but then has no
+     defence against other magical attacks. If the subject of the
+     spell  is  a  monster, it simply does not attack in the turn
+     following the one in which the spell  was  cast.  Elementals
+     are  unaffected.   If  the  subject of the spell is also the
+     subject of any of 'amnesia',  'confusion',  'charm  person',
+     'charm monster' or 'fear', none of the spells work.
+
+
+     'Fear': 
+
+     In the turn following the casting of this spell, the subject
+     cannot  perform a C, D, F or S gesture with either hand. (He
+     can stab, however.) This obviously has  no  effect  on  mon-
+     sters.   If  the  subject  is also the subject of 'amnesia',
+     'confusion', 'charm person', 'charm monster' or 'paralysis',
+     then none of the spells work.
+
+     'Anti-spell': 
+
+     On the turn following the casting of this spell, the subject
+     cannot include any gestures made on or before this turn in a
+     spell sequence and must restart a new spell from the  begin-
+     ning  of  that  spell sequence. (This is marked by a special
+     'disruption' icon interrupting the  subject's  gesture  his-
+     tory.)  The  spell  does not affect spells which are cast on
+     the same turn; nor does it affect monsters.
+
+     'Protection from Evil': 
+
+     For this turn and the following three turns, the subject  of
+     this  spell  is protected as if using a 'shield' spell, thus
+     leaving both hands free.  Concurrent 'shield'  spells  offer
+     no  further  protection, and compound 'protection from evil'
+     spells merely overlap offering no extra cover.
+
+     'Resist Heat': 
+
+     The subject of this spell becomes permanently  resistant  to
+     all  forms of heat attack ('fireball', 'fire storm' and fire
+     elementals). Only 'dispel  magic'  or  'remove  enchantment'
+     will  terminate  this  resistance  once  started (although a
+     'counter-spell' will prevent it from working if cast at  the
+     subject  at  the  same  time as this spell). A 'resist heat'
+     cast directly on a fire elemental will destroy it before  it
+     can  attack that turn, but there is no effect on ice elemen-
+     tals.
+
+     'Resist Cold': 
+
+     The effects of this spell are identical to 'resist heat' but
+     resistance  is  to cold ('ice storm' and ice elementals). It
+     destroys ice elementals if  they  are  the  subject  of  the
+     spell, but doesn't affect fire elementals.
+
+     'Disease': 
+
+     The subject of this spell  immediately  contracts  a  deadly
+     (non-contagious) disease which will kill him at the end of 6
+     turns counting from the one upon which the  spell  is  cast.
+     The  malady  is  cured  by 'remove enchantment', 'cure heavy
+     wounds' or 'dispel magic' in the meantime.
+
+     'Poison': 
+
+     This is similar to the 'disease' spell,  except  that  'cure
+     heavy wounds' does not stop its effects.
+
+     'Blindness': 
+
+     For the next three turns (not including the one in which the
+     spell  was  cast),  the subject is unable to see. If he is a
+     wizard, he cannot tell what  his  opponent's  gestures  are,
+     although  he will sense what spells are cast. If he tries to
+     cast spells (or stab) at other beings, he will miss. Blinded
+     monsters  are  instantly destroyed and cannot attack in that
+     turn.
+
+     'Invisibility': 
+
+     This spell is similar to 'blindness';  the  subject  of  the
+     spell  becomes  invisible  to his opponent and his monsters.
+     His gestures cannot be seen, although  his  spells  can.  No
+     other  being  can  attack  or  cast  spells at him, with the
+     exception of elementals.  Any monster made invisible is des-
+     troyed  due to the unstable nature of such magically created
+     creatures.
+
+     'Haste': 
+
+     For the next three turns, the subject is speeded up; wizards
+     can  make an extra set of gestures, and monsters can make an
+     extra attack.  For wizards, the effects of both sets of ges-
+     tures are taken simultaneously at the end of the turn.  Thus
+     a single 'counter-spell' from his adversary could cancel two
+     spells  cast by the hastened wizard on two half-turns if the
+     phasing is right. Non-hastened wizards and monsters can  see
+     everything  the hastened individual is doing.  Hastened mon-
+     sters can change target in the extra turns if desired.
+
+     'Time stop': 
+
+     The subject of this spell immediately takes an  extra  turn,
+     on  which  no-one  can  see  or  know  about unless they are
+     harmed. All non-affected beings have no  resistance  to  any
+     form  of  attack, e.g. a wizard halfway through the duration
+     of a 'protection from evil' spell can be harmed by a monster
+     which has had its time stopped. Time-stopped monsters attack
+     whoever their controller instructs, and time-stopped elemen-
+     tals affect everyone, resistance to heat or cold being imma-
+     terial in that turn.
+
+
+     'Delayed effect': 
+
+     This spell must be cast upon a wizard. The  next  spell  the
+     subject  completes,  provided it is in one of the next three
+     turns, is "banked" until needed -- i.e.  it  fails  to  work
+     until  its caster desires.  (If you have a spell banked, you
+     will be asked each turn if you want  to  release  it.)  Note
+     that  spells banked are those cast by the subject, not those
+     cast at him. If he casts more than one  spell  at  the  same
+     time, he chooses which is to be banked. Remember that P is a
+     'shield' spell, and surrender is not a spell. A  wizard  may
+     only have one spell banked at any one time.
+
+     'Permanency': 
+
+     This spell must be upon a wizard. The  next  spell  he  com-
+     pletes,  provided  it  is in the next three turns, and which
+     falls into the category  of  "Enchantments"  will  have  its
+     effect  made permanent. (Exeptions: 'anti-spell', 'disease',
+     'poison', 'time-stop', 'delayed  effect',  and  'permanency'
+     cannot  be  made  permanent.  Note  that  'resist  heat' and
+     'resist cold' are inherently permanent  enchantments.)  This
+     means  that  the  effect  of the extended spell on the first
+     turn of its duration is repeated eternally. For  example,  a
+     'confusion'  spell will produce the same gesture on the same
+     hand rather than changing randomly each turn; a 'charm  per-
+     son' will mean repetition of the chosen gesture, etc. If the
+     subject of the 'permanency' casts more than one spell at the
+     same  time eligible for permanency, he chooses which has its
+     duration extended. Note that the person who  has  his  spell
+     made permanent does not necessarily have to make himself the
+     subject of the spell. If both a  'permanency'  and  'delayed
+     effect'  are  eligible  for  the  same spell to be banked or
+     extended, a choice must be made;  whichever  is  not  chosen
+     will affect the next eligible spell instead.
+
+     Non-spells
+
+     'Surrender': 
+
+     This is not a spell; consequently, it cannot be cast at any-
+     one, nor can it be dispelled, counter-spelled, reflected off
+     a mirror, or banked.  A wizard who makes two simultaneous  P
+     gestures,  irrespective  of whether they terminate spells or
+     not, surrenders and the contest is  over.  The  surrendering
+     wizard  is  deemed to have lost unless his gestures complete
+     spells which kill his opponent. Two simultaneous  surrenders
+     count as a draw. It is a necessary skill for wizards to work
+     their spells so that they never accidentally perform  two  P
+     gestures  simultaneously.   Wizards  can  be  killed as they
+     surrender (if hit with appropriate spells  or  attacks)  but
+     the   "referees"  will  cure  any  diseases,  poisons,  etc.
+     immediately after the surrender for them.
+
+     'Stab': stab
+
+     This is not a spell, but an attack which can be directed  at
+     any  individual  monster or wizard. Unless protected in that
+     turn by a 'shield' spell or  another  spell  with  the  same
+     effect,  the  target  stabbed suffers 1 point of damage. The
+     wizard only has one knife, so can only stab with one hand in
+     any  turn, although which hand doesn't matter. The stab can-
+     not be reflected, counter-spelled, dispelled, or banked.
+
+BUGS
+     Does not conform exactly to the original Spellcaster  rules.
+     Tough. Some points of divergence:
+
+     The choosing of targets for monsters  is  handled  much  too
+     late  in  the  round,  and monster attacks are not perfectly
+     simultaneous with spell attacks. This results in a number of
+     minor  effects  which  are  inconsistent  with  the original
+     rules. Since I don't plan to  do  a  major  rewrite  anytime
+     soon, you just get to live with it.
+
+     If 'remove enchantment' is cast on a wizard who is also  the
+     subject of a summoning spell, the summoned monster should be
+     destroyed after attacking.
+
+     If a mind-control spell (paralysis, confusion,  amnesia)  is
+     cast on a monster by a time-stopped wizard, the spell should
+     take effect on the next turn, rather than (as currently hap-
+     pens) the turn after next.
+
+     The 'delayed effect' and 'permanency' spells should be  able
+     to  bank or extend spells cast during the same turn, as well
+     as those cast during the next three turns.
+
+HISTORY
+     The original paper-and-pencil version of this game, entitled
+     Spellbinder,  was  created by Richard Bartle; it was printed
+     in his zine Sauce of the Nile. He attempted to have it  com-
+     mercially produced, but apparently didn't get very far.
+     It was reprinted (with some changes) as Spellcaster  in  the
+     fanzine  Duel  Purpose, written by Mike Lean. From there, it
+     was scanned  and  posted  to  the  Net  by  Andrew  Buchanan
+     (buchanan@heron.enet.dec.com). I grabbed it and wrote this X
+     version.
+
+      Richard Bartle <76703.3042@compuserve.com> would like to
+      point out that he is not at all dead. He has nicely given his 
+      permissionto distribute this program, as long as it remains free.     
+AUTHOR
+     Andrew Plotkin <ap1i+@andrew.cmu.edu>
+
+ + --- spellcast-1.0.orig/debian/po/es.po +++ spellcast-1.0/debian/po/es.po @@ -0,0 +1,54 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: spellcast 1.0-17\n" +"Report-Msgid-Bugs-To: spellcast@packages.debian.org\n" +"POT-Creation-Date: 2003-07-20 11:28+0200\n" +"PO-Revision-Date: 2003-10-28 01:42+0200\n" +"Last-Translator: Javier Fernandez-Sanguino \n" +"Language-Team: Debian Spanish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Description +#: ../templates:3 +msgid "Spellcast needs X listening on port 6000 to work" +msgstr "Spellcast necesita que las X estén a la escucha en el puerto 6000" + +#. Description +#: ../templates:3 +msgid "" +"In order for the spellcast game to work, even if not using a remote " +"computer, your X server must be listening in port 6000. Debian default " +"installation (since the 'woody' distribution) disables X from doing this by " +"adding the \"-nolisten tcp\" option. You must change your configuration " +"(editing /etc/X11/gdm/gdm.conf, or /etc/X11/xinit/xserverrc depending on how " +"you start your X environment) to remove that option." +msgstr "" +"Su servidor de X debe estar escuchando en el puerto 6000 para que el juego " +"spellcast funcione correctamente, aunque no esté utilizando un ordenador " +"remoto. La instalación por defecto de Debian (desde la distribución 'woody') " +"inhabilita que el servidor de X haga esto añadiendo la opción \"-nolisten tcp" +"\". Debe cambiar su configuración (editando /etc/X11/gdm/gdm.conf, o /etc/X11/" +"xinit/xserverrc dependiendo de como arranque su entorno X) para eliminar " +"esta opción." + +#. Description +#: ../templates:3 +msgid "Please note: This opens up a potential security risk in your system." +msgstr "" +"Por favor, tenga en cuenta que hacer esto introduce un problema potencial de " +"seguridad en su sistema." --- spellcast-1.0.orig/debian/po/POTFILES.in +++ spellcast-1.0/debian/po/POTFILES.in @@ -0,0 +1 @@ +[type: gettext/rfc822deb] templates --- spellcast-1.0.orig/debian/po/ru.po +++ spellcast-1.0/debian/po/ru.po @@ -0,0 +1,55 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2003-07-20 11:28+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=KOI8-R\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Description +#: ../templates:3 +msgid "Spellcast needs X listening on port 6000 to work" +msgstr "äÌÑ ÒÁÂÏÔÙ Spellcast ÎÕÖÎÏ, ÞÔÏÂÙ X ÓÌÕÛÁÌ ÐÏÒÔ 6000" + +#. Description +#: ../templates:3 +msgid "" +"In order for the spellcast game to work, even if not using a remote " +"computer, your X server must be listening in port 6000. Debian default " +"installation (since the 'woody' distribution) disables X from doing this by " +"adding the \"-nolisten tcp\" option. You must change your configuration " +"(editing /etc/X11/gdm/gdm.conf, or /etc/X11/xinit/xserverrc depending on how " +"you start your X environment) to remove that option." +msgstr "" +"äÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÉÇÒÁ spellcast ÍÏÇÌÁ ÒÁÂÏÔÁÔØ, ÄÁÖÅ ÅÓÌÉ ÕÄÁÌÅÎÎÙÅ " +"ËÏÍÐØÀÔÅÒÙ ÎÅ ÉÓÐÏÌØÚÕÀÔÓÑ, ×ÁÛ ÓÅÒ×ÅÒ X ÄÏÌÖÅÎ ÓÌÕÛÁÔØ ÐÏÒÔ 6000. õÓÔÁÎÏ×ËÁ " +"× Debian ÐÏ ÕÍÏÌÞÁÎÉÀ (ÎÁÞÉÎÁÑ Ó ÄÉÓÔÒÉÂÕÔÉ×Á 'woody') ÚÁÐÒÅÝÁÅÔ X ÄÅÌÁÔØ " +"ÜÔÏ ÄÏÂÁ×ÌÅÎÉÅÍ ÏÐÃÉÉ \"-nolisten tcp\" × ÓÔÒÏËÕ ÚÁÐÕÓËÁ. ÷Ù ÄÏÌÖÎÙ ÉÚÍÅÎÉÔØ " +"×ÁÛÕ ÎÁÓÔÒÏÊËÕ (ÏÔÒÅÄÁËÔÉÒÏ×Á× /etc/X11/gdm/gdm.conf, ÉÌÉ /etc/X11/xinit/" +"xserverrc × ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ÍÅÔÏÄÁ ÚÁÐÕÓËÁ ×ÁÛÅÇÏ X ÏËÒÕÖÅÎÉÑ) ÄÌÑ ÕÄÁÌÅÎÉÑ " +"ÜÔÏÊ ÏÐÃÉÉ." + +#. Description +#: ../templates:3 +msgid "Please note: This opens up a potential security risk in your system." +msgstr "" +"ðÏÖÁÌÕÊÓÔÁ, ÚÁÍÅÔØÔÅ: üÔÏ ÏÔËÒÙ×ÁÅÔ ÐÏÔÅÎÃÉÁÌØÎÕÀ ÄÙÒÕ × ÚÁÝÉÔÅ ×ÁÛÅÊ " +"ÓÉÓÔÅÍÙ." --- spellcast-1.0.orig/debian/po/templates.pot +++ spellcast-1.0/debian/po/templates.pot @@ -0,0 +1,46 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2003-07-20 11:28+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Description +#: ../templates:3 +msgid "Spellcast needs X listening on port 6000 to work" +msgstr "" + +#. Description +#: ../templates:3 +msgid "" +"In order for the spellcast game to work, even if not using a remote " +"computer, your X server must be listening in port 6000. Debian default " +"installation (since the 'woody' distribution) disables X from doing this by " +"adding the \"-nolisten tcp\" option. You must change your configuration " +"(editing /etc/X11/gdm/gdm.conf, or /etc/X11/xinit/xserverrc depending on how " +"you start your X environment) to remove that option." +msgstr "" + +#. Description +#: ../templates:3 +msgid "Please note: This opens up a potential security risk in your system." +msgstr "" --- spellcast-1.0.orig/debian/po/fr.po +++ spellcast-1.0/debian/po/fr.po @@ -0,0 +1,52 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: spellcast_1.0-14\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2003-07-20 11:28+0200\n" +"PO-Revision-Date: 2003-07-20 19:29+0200\n" +"Last-Translator: Michel Grentzinger \n" +"Language-Team: French \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Description +#: ../templates:3 +msgid "Spellcast needs X listening on port 6000 to work" +msgstr "Pour que spellcast fonctionne, X doit écouter sur le port 6000." + +#. Description +#: ../templates:3 +msgid "" +"In order for the spellcast game to work, even if not using a remote " +"computer, your X server must be listening in port 6000. Debian default " +"installation (since the 'woody' distribution) disables X from doing this by " +"adding the \"-nolisten tcp\" option. You must change your configuration " +"(editing /etc/X11/gdm/gdm.conf, or /etc/X11/xinit/xserverrc depending on how " +"you start your X environment) to remove that option." +msgstr "" +"Afin que le jeu spellcast puisse fonctionner, même s'il n'est pas utilisé " +"depuis un hôte distant, votre serveur X doit écouter sur le port 6000. Les " +"installations par défaut de Debian (à partir de la distribution « Woody »), " +"empêchent le serveur X de faire cela en ajoutant l'option « -nolisten tcp ». " +"Vous devez modifier votre configuration (en modifiant /etc/X11/gdm/gdm.conf, " +"ou /etc/X11/xinit/xserverrc selon la façon dont vous démarrez votre " +"environnement X) afin de supprimer cette option." + +#. Description +#: ../templates:3 +msgid "Please note: This opens up a potential security risk in your system." +msgstr "" +"Veuillez noter que cela introduit une faille de sécurité potentielle sur " +"votre système." --- spellcast-1.0.orig/debian/po/da.po +++ spellcast-1.0/debian/po/da.po @@ -0,0 +1,51 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: spellcast\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2003-07-20 11:28+0200\n" +"PO-Revision-Date: 2004-03-29 15:02+0200\n" +"Last-Translator: Morten Brix Pedersen \n" +"Language-Team: Danish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Description +#: ../templates:3 +msgid "Spellcast needs X listening on port 6000 to work" +msgstr "Spellcast kræver at X lytter pÃ¥ port 6000 for at virke" + +#. Description +#: ../templates:3 +msgid "" +"In order for the spellcast game to work, even if not using a remote " +"computer, your X server must be listening in port 6000. Debian default " +"installation (since the 'woody' distribution) disables X from doing this by " +"adding the \"-nolisten tcp\" option. You must change your configuration " +"(editing /etc/X11/gdm/gdm.conf, or /etc/X11/xinit/xserverrc depending on how " +"you start your X environment) to remove that option." +msgstr "" +"For at spellcast spillet skal virke, selv hvis du ikke bruger en fjerncomputer" +", skal din X-server lytte pÃ¥ port 6000. Debians standardinstallation, " +"deaktiverer dette fra X ved at tilføje \"-nolisten tcp\" indstillingen. Du " +"skal ændre din opsætning (redigér /etc/X11/gdm/gdm.conf, eller /etc/X11/xinit" +"/xserverrc afhængig af hvordan du starter X) for at fjerne den indstilling." + + +#. Description +#: ../templates:3 +msgid "Please note: This opens up a potential security risk in your system." +msgstr "Bemærk: Dette Ã¥bner op for en potentiel sikkerhedsrisiko pÃ¥ dit system." --- spellcast-1.0.orig/debian/po/cs.po +++ spellcast-1.0/debian/po/cs.po @@ -0,0 +1,55 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: spellcast\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2003-07-20 11:28+0200\n" +"PO-Revision-Date: 2005-07-23 18:42+0200\n" +"Last-Translator: Katarina Machalkova \n" +"Language-Team: Czech \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-2\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Description +#: ../templates:3 +msgid "Spellcast needs X listening on port 6000 to work" +msgstr "" +"Aby spellcast fungoval, potøebuje X server naslouchající " +"na portu 6000." + +#. Description +#: ../templates:3 +msgid "" +"In order for the spellcast game to work, even if not using a remote " +"computer, your X server must be listening in port 6000. Debian default " +"installation (since the 'woody' distribution) disables X from doing this by " +"adding the \"-nolisten tcp\" option. You must change your configuration " +"(editing /etc/X11/gdm/gdm.conf, or /etc/X11/xinit/xserverrc depending on how " +"you start your X environment) to remove that option." +msgstr "" +"Aby hra spellcast fungovala, musí vá¹ X server naslouchat na portu 6000 " +"(a to i v pøípadì, ¾e nepou¾íváte vzdálený poèítaè). Výchozí instalace " +"Debianu (od verze 'Woody') toto X serveru nedovolí, proto¾e pøidává " +"volbu \"-nolisten tcp\". Musíte zmìnit va¹i konfiguraci (úpravou souboru " +"/etc/X11/gdm/gdm.conf, nebo /etc/X11/xinit/xserverrc v závislosti na tom, " +"jak spou¹títe prostøedí X Window) a tuto volbu odstranit." + +#. Description +#: ../templates:3 +msgid "Please note: This opens up a potential security risk in your system." +msgstr "" +"Prosím v¹imnìte si: Takto vzniká potenciální bezpeènostní riziko " +"pro vá¹ systém." --- spellcast-1.0.orig/README.colour +++ spellcast-1.0/README.colour @@ -0,0 +1,19 @@ + +I have added the ability for players to specify a colour. During play, +any actions performed by a player are written to the screen in their +colour. A player can specify the colour they want to use by adding this +line to their xrdb database: + + spellcast*colour: + +for example: + + spellcast*colour: SkyBlue3 + + +I have also added a separating line between each round, so that it is much +easier for each player to see what has happened within that round. Both of +these additions can be removed from the game, see the Makefile for more +details. + +F.Hendrikx, Sep 1998 --- spellcast-1.0.orig/README.resolution +++ spellcast-1.0/README.resolution @@ -0,0 +1,17 @@ + +Spellcast was written with the old Xlib interface (anyone to rewrite it +for new & improved toolkits?). This, along with having hard-wired the +definition on buttons' and text-windows sizes made it hard to work +in lower than 1024x768 resolutions. + +However, the code has been changed (adding a new xwindow.h header and +defining there different views) to enable different resoltuions. Currently +there are three resolutions available: + +- RES1024. The old interface +- RES800. A redefined interface so it can be played on 800x600 displays. +- RESVAR. A variable interface, it is not yet debugged and might not +work as expected, the idea of this interface is for window sizes to be +#def' at compile time and the rest of the attributes will adjust to it. + +In order to compile on of this resoultions must be defined --- spellcast-1.0.orig/xwindow.h +++ spellcast-1.0/xwindow.h @@ -0,0 +1,323 @@ +#ifndef _XWINDOW_H +#define _XWINDOW_H + +/* Currently if no resolution is used it sets RES1024 */ +#ifndef RES800 + #ifndef RESVAR + #ifndef RES1024 + #define RES1024 + #endif + #endif +#endif + +#ifdef RES1024 +/* This is to be used in a 1024x768 resolution */ +#define WIN_WID 832 +#define WIN_HGT 750 +#define PIXMAP_SIZE (48) +/* general definitions */ +#define SCROLL_W (16) +#define GEST_SIZE (48) +#define GEST_SMALL (16) +#define FRAME_SHADOW (3) + + +#define COLUMN_SIZE (8) +#define COLUMN_X (476) +#define COLUMN_Y (33) +#define GEST_SPACE (50) +#define X_BETWEEN_COLS (20) + +/* Definitions previously in xbutton.c */ +#define BBOX_X (32) +#define BBOX_Y (610) +#define BBOX_W (2) +#define BBOX_H (1) + +#define BUTTON_W (150) +#define BUTTON_H (32) +#define BUTTON_CORNER (3) +#define BUTTON_SPACE (4) + +/* Definitions previously in xquery.c */ +#define QUERY_X (32) +#define QUERY_Y (642) +#define QUERY_W (736) +#define QUERY_H (100) +#define QUERY_AW (450) + +/* Definitions previously in xgest.c */ +#define QUERY_LEADING (8) +#define QMENU_LEADING (4) +#define QMENU_BORDER (4) +#define GEST_SPACE (50) +#define X_BETWEEN_COLS (20) + +/* Definitions previously in xtext.c */ + +#define TEXT_WID (400) +#define TEXT_HGT (550) +#define TEXT_X (32) +#define TEXT_Y (32) + +#define MAXLINESIZE (512) /* maximum number of chars that could possibly fit + in a line. If the player uses bits1, this will + probably crash. Tough. */ + +/* Definitions previously in xtalk.c */ +#define TALK_X (380) +#define TALK_Y (610) +#define TALK_W (448) +#define TALK_LEADING (8) + + +/* Definitios previously in xloop.c */ +#define STATS_X (476) +#define STATS_Y (449) +#define STATS_W (324) +#define STATS_H (150) +#define STATS_HP (244) + + + +#endif + +#ifdef RES800 +/* This is for 800x600 */ + +/* Definitions previously in main.c */ +#define WIN_WID 800 +#define WIN_HGT 600 +#define PIXMAP_SIZE (48) + +/* Definitions previousy in xgest.c */ +/* Define the size for the gesture history + list. Was defined with 8 gestures */ +/* Maybe we could do adjust COLUMN_SIZE + a bit better so it auto adjusts + based on the resolution (WIN_WID). + Perhaps based on size of pixmaps 48x48?*/ +#define COLUMN_SIZE (5) +#define COLUMN_X (460) +#define COLUMN_Y (33) +#define GEST_SPACE (50) +#define X_BETWEEN_COLS (20) +/* general definitions */ +#define SCROLL_W (16) +#define GEST_SIZE (48) +#define GEST_SMALL (16) +#define FRAME_SHADOW (3) + + +/* Definitions previously in xbutton.c */ +/* Defines the position and size of buttons */ +#define BBOX_X (32) +#define BBOX_Y (400) +#define BBOX_W (2) +#define BBOX_H (1) + +#define BUTTON_W (150) +#define BUTTON_H (32) +#define BUTTON_CORNER (3) +#define BUTTON_SPACE (4) + + +/* Definitions previously in xtext.c */ + +#define TEXT_WID (400) +#define TEXT_HGT (350) +#define TEXT_X (32) +#define TEXT_Y (32) + +#define MAXLINESIZE (512) /* maximum number of chars that could possibly fit + in a line. If the player uses bits1, this will + probably crash. Tough. */ + +/* Definitions previously in xquery.c */ +#define QUERY_X (32) +#define QUERY_Y (450) +#define QUERY_W (736) +#define QUERY_H (100) +#define QUERY_AW (450) + +#define QUERY_LEADING (8) +#define QMENU_LEADING (4) +#define QMENU_BORDER (4) + +#define GEST_SPACE (50) + +/* Definitions previously in xtalk.c */ +#define TALK_X (335) +#define TALK_Y (400) +#define TALK_W (430) +#define TALK_LEADING (8) + + +/* Definitios previously in xloop.c */ +#define STATS_X (475) +#define STATS_Y (300) +#define STATS_W (300) +#define STATS_H (85) +#define STATS_HP (244) + + +#endif + +#ifdef RESSMALL +/* Taken from patched spellcast found at */ +/* This is to be used in a small resolution */ +#define WIN_WID 832 +#define WIN_HGT 575 +#define PIXMAP_SIZE (48) +/* general definitions */ +#define SCROLL_W (16) +#define GEST_SIZE (48) +#define GEST_SMALL (16) +#define FRAME_SHADOW (3) + +/* Definitions previously in xgest.c */ +#define COLUMN_SIZE (8) +#define COLUMN_X (426) +#define COLUMN_Y (18) +#define GEST_SPACE (50) +#define X_BETWEEN_COLS (10) + + + +/* Definitions previously in xbutton.c */ +#define BBOX_X (32) +#define BBOX_Y (426) +#define BBOX_W (2) +#define BBOX_H (1) + +#define BUTTON_W (150) +#define BUTTON_H (28) +#define BUTTON_CORNER (3) +#define BUTTON_SPACE (4) + +/* Definitions previously in xquery.c */ +#define QUERY_X (32) +#define QUERY_Y (465) +#define QUERY_W (736) +#define QUERY_H (100) +#define QUERY_AW (450) + +#define QUERY_LEADING (8) +#define QMENU_LEADING (4) +#define QMENU_BORDER (4) + +#define GEST_SPACE (50) + +/* Definitions previously in xtext.c */ + +#define TEXT_WID (400) +#define TEXT_HGT (332) +#define TEXT_X (18) +#define TEXT_Y (5) + +#define MAXLINESIZE (512) /* maximum number of chars that could possibly fit + in a line. If the player uses bits1, this will + probably crash. Tough. */ + +/* Definitions previously in xtalk.c */ +#define TALK_X (380) +#define TALK_Y (425) +#define TALK_W (448) +#define TALK_LEADING (8) + + +/* Definitios previously in xloop.c */ +#define STATS_X (18) +#define STATS_Y (343) +#define STATS_W (324) +#define STATS_H (74) +#define STATS_HP (244) + + + +#endif + + +#ifdef RESVAR +/* This is for other resolutions */ +/* TODO: this must be intelligently done so that we can + define WIN_WID and WIN_HGT and we get an acceptable screen */ + +/* Definitions previously in main.c */ +#define WIN_WID 800 +#define WIN_HGT 600 +#define PIXMAP_SIZE (48) +/* general definitions */ +#define SCROLL_W (16) +#define GEST_SIZE (48) +#define GEST_SMALL (16) +#define FRAME_SHADOW (3) + + +/* Definitions previousy in xgest.c */ +/* Define the size for the gesture history + list. Was defined with 8 gestures */ +/* Maybe we could do adjust COLUMN_SIZE + a bit better so it auto adjusts + based on the resolution (WIN_WID). + Perhaps based on size of pixmaps 48x48?*/ +#define COLUMN_SIZE (8) +#define COLUMN_X (60+WIN_WID/2) +#define COLUMN_Y (33) +#define GEST_SPACE (50) + +/* Definitions previouls in xbutton.c */ +/* Defines the position and size of buttons */ +#define BBOX_X (32) +#define BBOX_Y (WIN_HGT) +#define BBOX_W (2) +#define BBOX_H (1) + +#define BUTTON_W (150) +#define BUTTON_H (32) +#define BUTTON_CORNER (3) +#define BUTTON_SPACE (4) + + +/* Definitions previously in xtext.c */ + +#define TEXT_WID (WIN_WID/2) +#define TEXT_HGT (WIN_HGT*5/6) +#define TEXT_X (32) +#define TEXT_Y (32) + +#define MAXLINESIZE (512) /* maximum number of chars that could possibly fit + in a line. If the player uses bits1, this will + probably crash. Tough. */ + +/* Definitions previously in xquery.c */ +#define QUERY_X (32) +#define QUERY_Y (WIN_HGT+10) +#define QUERY_W (736) +#define QUERY_H (100) +#define QUERY_AW (450) + +#define QUERY_LEADING (8) +#define QMENU_LEADING (4) +#define QMENU_BORDER (4) +#define GEST_SPACE (50) +#define X_BETWEEN_COLS (20) + +/* Definitions previously in xtalk.c */ +#define TALK_X (WIN_WID/2) +#define TALK_Y (WIN_HGT*5/6+10) +#define TALK_W (448) +#define TALK_LEADING (8) + + +/* Definitios previously in xloop.c */ +#define STATS_X (476) +#define STATS_Y (449) +#define STATS_W (324) +#define STATS_H (104) +#define STATS_HP (244) + + +#endif + +#endif /* of ifndef XWINDOW_H */ --- spellcast-1.0.orig/configure.in +++ spellcast-1.0/configure.in @@ -0,0 +1,23 @@ +AC_PREREQ(2.1) +AC_REVISION($Revision: 1.2 $) +AC_INIT(main.c) +AC_CONFIG_HEADER(config.h) + +prefix=/usr +datadir=/usr/share/spellcast + +AC_PROG_CC + +ALL_LINGUAS="es" +AM_GNU_GETTEXT + +AC_SUBST(CFLAGS) +AC_SUBST(CPPFLAGS) +AC_SUBST(LDFLAGS) + + +AC_OUTPUT([ +Makefile +intl/Makefile +po/Makefile.in +]) --- spellcast-1.0.orig/po/Makefile +++ spellcast-1.0/po/Makefile @@ -0,0 +1,31 @@ +INSTALL= /usr/bin/install -c +INSTALL_CMD= ${INSTALL} -m 644 +INSTALLDIR=${DESTDIR}/usr/share/locale +PACKAGE = spellcast + +CATALOGS = es.mo + +POTFILES= ../*.c ../*.h + +all: $(PACKAGE).pot $(CATALOGS) + +$(PACKAGE).pot: $(POTFILES) + xgettext --default-domain=$(PACKAGE) --add-comments --keyword=_ --keyword=S_ $(POTFILES) + if cmp -s $(PACKAGE).po $(PACKAGE).pot; then \ + rm -f $(PACKAGE).po; \ + else \ + mv $(PACKAGE).po $(PACKAGE).pot; \ + fi + +clean: + rm -f *mo $(PACKAGE).pot *~ + +install: $(CATALOGS) + for n in $(CATALOGS); do \ + l=`basename $$n .mo`; \ + $(INSTALL) -m 755 -d $(INSTALLDIR)/$$l; \ + $(INSTALL) -m 755 -d $(INSTALLDIR)/$$l/LC_MESSAGES; \ + $(INSTALL) -m 644 $$n $(INSTALLDIR)/$$l/LC_MESSAGES/$(PACKAGE).mo; \ + done +%.mo: %.po + msgfmt -o $@ $< --- spellcast-1.0.orig/po/es.po +++ spellcast-1.0/po/es.po @@ -0,0 +1,2560 @@ +# Spanish spellcast translation +# Copyright (C) 2004 Software in the Public Interest +# Javier Fernandez-Sanguino , 2004 +# +msgid "" +msgstr "" +"Project-Id-Version: Spellcast 1.0\n" +"POT-Creation-Date: 2002-01-15 17:25+0100\n" +"PO-Revision-Date: 2002-01-15 14:13+010E\n" +"Last-Translator: Javier Fernandez-Sanguino Peña \n" +"Language-Team: es \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../emonster.c:128 +msgid " the Goblin" +msgstr " el Goblin" + +#: ../emonster.c:133 +msgid " the Ogre" +msgstr " el Ogro" + +#: ../emonster.c:138 +msgid " the Troll" +msgstr " el Troll" + +#: ../emonster.c:143 +msgid " the Giant" +msgstr " el Gigante" + +#: ../emonster.c:149 +msgid " the Fiery" +msgstr " el Hada" + +#: ../emonster.c:155 +msgid " the Icy" +msgstr " el Hielo" + +#: ../emonster.c:191 +msgid "ERROR: wrong type of turn in execute_monsters()\n" +msgstr "ERROR: tipo de turno erroneo en execute_monsters()\n" + +#: ../emonster.c:204 +#, c-format +msgid "%s suddenly looks confused.\n" +msgstr "%s de pronto parece confundido.\n" + +#: ../emonster.c:211 +#, c-format +msgid "%s is paralyzed and cannot attack.\n" +msgstr "%s está paralizado y no puede atacar.\n" + +#: ../emonster.c:218 +#, c-format +msgid "%s looks around blankly.\n" +msgstr "%s mira alrededor con los ojos en blanco.\n" + +#: ../emonster.c:362 +#, c-format +msgid "%s refuses to attack %s.\n" +msgstr "%s se niega a atacar a %s.\n" + +#: ../emonster.c:371 +#, c-format +msgid "%s tries to attack you, but cannot see you.\n" +msgstr "%s intenta atacarte, pero no puede verte.\n" + +#: ../emonster.c:372 +#, c-format +msgid "%s tries to attack %s, but cannot see %s.\n" +msgstr "%s intenta atacar %s, pero no puede ver a %s.\n" + +#: ../emonster.c:382 +#, c-format +msgid "The attack of %s is blocked by your Shield.\n" +msgstr "El ataque de %s queda bloqueado por tu Escudo.\n" + +#: ../emonster.c:383 +#, c-format +msgid "The attack of %s is blocked by %s's Shield.\n" +msgstr "El ataque de %s lo bloquea el Escudo de %s.\n" + +#: ../emonster.c:394 +#, c-format +msgid "%s reaches towards you, but you feel only a warm breeze.\n" +msgstr "%s intenta atacarte, pero sólo sientes una calida brisa.\n" + +#: ../emonster.c:396 +#, c-format +msgid "%s reaches toward %s, but cannot penetrate %s blue aura.\n" +msgstr "%s intenta atacar a %s, pero no puede penetrar el aura azul de %s.\n" + +#: ../emonster.c:404 +#, c-format +msgid "%s hurls tongues of fire at you.\n" +msgstr "%s envía una lengua de fuego hacia tí.\n" + +#: ../emonster.c:405 +#, c-format +msgid "%s hurls fire at %s.\n" +msgstr "%s envía fuego hacia %s.\n" + +#: ../emonster.c:415 +#, c-format +msgid "%s reaches towards you, but you feel only a chill breeze.\n" +msgstr "" + +#: ../emonster.c:417 +#, c-format +msgid "%s reaches toward %s, but cannot penetrate %s pink aura.\n" +msgstr "%s intenga alcanzar a %s, pero no puede penetrar el aura rosa de %s.\n" + +#: ../emonster.c:425 +#, c-format +msgid "%s hurls splinters of ice at you.\n" +msgstr "%s envía astillas de hielo hacia vd.\n" + +#: ../emonster.c:426 +#, c-format +msgid "%s hurls ice at %s.\n" +msgstr "%s envía hielo hacia %s.\n" + +#: ../emonster.c:437 +#, c-format +msgid "%s attacks %s!\n" +msgstr "¡%s ataca a %s!\n" + +#: ../emonster.c:442 +#, c-format +msgid "%s attacks you.\n" +msgstr "%s le ataca.\n" + +#: ../emonster.c:443 +#, c-format +msgid "%s attacks %s.\n" +msgstr "%s ataca %s.\n" + +#: ../engine.c:122 +msgid "digit" +msgstr "digito" + +#: ../engine.c:125 +msgid "fingers" +msgstr "dedos" + +#: ../engine.c:128 +msgid "palm" +msgstr "palma" + +#: ../engine.c:131 +msgid "wave" +msgstr "onda" + +#: ../engine.c:134 +msgid "clap" +msgstr "aplauso" + +#: ../engine.c:137 +msgid "snap" +msgstr "" + +#: ../engine.c:140 ../espells.c:68 +msgid "stab" +msgstr "acuchillar" + +#: ../engine.c:143 +msgid "nothing" +msgstr "nada" + +#: ../engine.c:213 +msgid "Too many players requested.\n" +msgstr "Se solicitaron demasiados jugadores.\n" + +#: ../engine.c:238 +#, c-format +msgid "" +"%s strides defiantly into the arena. The referee casts the formal Dispel " +"Magic and Anti-Spell on %s....\n" +msgstr "%s avanza de forma desafiante hacia la arena. El árbitro ejecuta los hechizos de Destrucción de la Magia y Anti-Hechizos sobre %s....\n" + +#: ../engine.c:239 +msgid "" +"You advance confidently into the arena. The referee casts the formal Dispel " +"Magic and Anti-Spell on you....\n" +msgstr "Avanzas confiado hacia la arena. El árbitro ejecuta los hechizos de Destrucción de la Magia y Anti-Hechizos sobre %s....\n" + +#: ../engine.c:264 +#, c-format +msgid "%s\n" +msgstr "%s\n" + +#: ../engine.c:315 +#, c-format +msgid "" +"In a fit of absent-mindedness, %s repeats %s gestures from last turn: %s " +"with the left hand, %s with the right.\n" +msgstr "" +"En un arrebato de ausencia de mente. %s repite %s gestos del turno anterior: %s" +"con la mano izquierda, %s con la diestra.\n" + +#: ../engine.c:330 +#, c-format +msgid "%s accidentally makes a %s with %s %s hand.\n" +msgstr "%s accidentalmente hace un %s con la mano %s %s.\n" + +#: ../engine.c:330 ../engine.c:359 ../engine.c:418 ../xgest.c:247 +msgid "right" +msgstr "derecha" + +#: ../engine.c:330 ../engine.c:359 ../engine.c:418 ../xgest.c:247 +msgid "left" +msgstr "izquierda" + +#: ../engine.c:359 +#, c-format +msgid "%s mysteriously makes a %s with %s %s hand.\n" +msgstr "%s misteriosamente hace un %s con la mano %s %s.\n" + +#: ../engine.c:376 +#, c-format +msgid "Terrified, %s does nothing with %s left hand.\n" +msgstr "Aterrado. %s no hace nada con la mano izquierda %s.\n" + +#: ../engine.c:379 +#, c-format +msgid "Terrified, %s does nothing with %s right hand.\n" +msgstr "Aterrado. %s no hace nada con la mano derecha %s.\n" + +#: ../engine.c:382 +#, c-format +msgid "Terrified, %s does nothing with either hand.\n" +msgstr "Aterrado. %s no hace nada con ninguna mano.\n" + +#: ../engine.c:385 +#, c-format +msgid "%s is terrified, but manages %s gestures anyway.\n" +msgstr "%s está aterrado, pero consigue hacer %s gestos de todas formas.\n" + +#: ../engine.c:412 +msgid "ERROR: paralysis previous_gesture returned bad value.\n" +msgstr "ERROR: paralysis previous_gesture devolvió un valor incorrecto.\n" + +#: ../engine.c:418 +#, c-format +msgid "%s's %s hand is frozen in a %s.\n" +msgstr "%s tiene su mano %s congelada en un %s.\n" + +#: ../engine.c:433 +msgid "You cannot stab with both hands!\n" +msgstr "¡No puedes acuchillar con ambas manos!\n" + +#: ../engine.c:452 +#, c-format +msgid "%s makes the gesture of surrender!\n" +msgstr "¡%s hace el gesto de rendición!\n" + +#: ../engine.c:453 +msgid "Oh, dear. You seem to have surrendered.\n" +msgstr "O Dios mío. Parece que te has rendido.\n" + +#: ../engine.c:513 ../engine.c:527 +#, c-format +msgid "%s accelerates into a flickering blur.\n" +msgstr "%s acelera a un borrón oscilante.\n" + +#: ../engine.c:514 +msgid "Everything around you stops dead. The world is silent and motionless.\n" +msgstr "Todo alrededor suyo se queda muerto. El mundo se para y queda en silencio.\n" + +#: ../engine.c:517 ../engine.c:531 +#, c-format +msgid "%s reappears, moving at normal speed.\n" +msgstr "%s reaparece, moviéndose a velocidad normal.\n" + +#: ../engine.c:518 +msgid "Everything begins moving again.\n" +msgstr "Todo empieza a moverse de nuevo.\n" + +#: ../engine.c:548 ../engine.c:568 +#, c-format +msgid "%s begins moving very quickly.\n" +msgstr "%s empieza a moverse muy rápido.\n" + +#: ../engine.c:549 +msgid "Everyone else begins moving very slowly.\n" +msgstr "Todo lo demás empieza a moverse lentamente.\n" + +#: ../engine.c:553 ../engine.c:573 +#, c-format +msgid "%s is still moving quickly.\n" +msgstr "%s se sigue moviéndo deprisa.\n" + +#: ../engine.c:554 +msgid "Everyone else is still moving slowly.\n" +msgstr "Todo lo demás sigue moviéndose despacio.\n" + +#: ../engine.c:557 ../engine.c:577 ../execute2.c:515 +#, c-format +msgid "%s slows down to normal speed.\n" +msgstr "%s vuelve a la velocidad normal.\n" + +#: ../engine.c:558 ../execute2.c:517 +msgid "Everyone comes back up to normal speed.\n" +msgstr "" + +#: ../engine.c:734 +msgid "ERROR:NOBODY-wiz" +msgstr "" + +#: ../engine.c:739 +msgid "ERROR:NOBODY-cre" +msgstr "" + +#: ../engine.c:744 +msgid "ERROR:NOBODY-corpse" +msgstr "" + +#: ../engine.c:746 +msgid "ERROR:NOBODY-atall" +msgstr "" + +#: ../engine.c:951 +msgid "ERROR: Unknown turn type\n" +msgstr "" + +#: ../engine.c:1000 +msgid "ERROR in restrict_gestures\n" +msgstr "" + +#: ../engine.c:1173 +msgid "ERROR: Unable to find Delayed spell.\n" +msgstr "" + +#: ../engine.c:1178 +#, c-format +msgid "" +"You cast %s; the spell is caught in the web of your Delayed Effect. It rises " +"to hover by your head.\n" +msgstr "" + +#: ../engine.c:1179 +#, c-format +msgid "%s casts %s; the spell is caught in the web of %s Delayed Effect.\n" +msgstr "" + +#: ../engine.c:1182 +#, c-format +msgid "The %s spell that you had caught previously is lost.\n" +msgstr "" + +#: ../engine.c:1183 +#, c-format +msgid "The %s spell that %s had caught previously is lost.\n" +msgstr "" + +#: ../engine.c:1224 +#, c-format +msgid "Your Permanency spell wraps itself around your %s spell.\n" +msgstr "" + +#: ../engine.c:1284 +#, c-format +msgid "%s starts to look hot and flushed.\n" +msgstr "" + +#: ../engine.c:1286 +msgid "You begin to feel somewhat feverish.\n" +msgstr "" + +#: ../engine.c:1291 +#, c-format +msgid "%s looks even more flushed.\n" +msgstr "" + +#: ../engine.c:1293 +msgid "Your fever is growing worse.\n" +msgstr "" + +#: ../engine.c:1298 +#, c-format +msgid "" +"%s is flushed and sweating, and seems to be somewhat unsteady on %s feet.\n" +msgstr "" + +#: ../engine.c:1300 +msgid "" +"You are very hot and somewhat dizzy, and your bones are starting to ache.\n" +msgstr "" + +#: ../engine.c:1305 +#, c-format +msgid "%s is both flushed and shivering violently.\n" +msgstr "" + +#: ../engine.c:1307 +msgid "" +"You are feverish and shivering at the same time, and you ache all over.\n" +msgstr "" + +#: ../engine.c:1312 +#, c-format +msgid "%s crumples to the ground, agony on %s sweating features.\n" +msgstr "" + +#: ../engine.c:1314 +msgid "" +"Your knees give way and you fall to the ground. Your head pounds " +"unmercifully as consciousness slips away....\n" +msgstr "" + +#: ../engine.c:1376 +#, c-format +msgid "%s has died!\n" +msgstr "" + +#: ../engine.c:1377 +msgid "You have died!\n" +msgstr "" + +#: ../engine.c:1390 +#, c-format +msgid "The Delayed Effect spell hovering around %s dies away.\n" +msgstr "" + +#: ../engine.c:1391 +msgid "The Delayed Effect spell hovering around you dies away.\n" +msgstr "" + +#: ../engine.c:1399 +#, c-format +msgid "The Permanency spell hovering around %s dies away.\n" +msgstr "" + +#: ../engine.c:1400 +msgid "The Permanency spell hovering around you dies away.\n" +msgstr "" + +#: ../engine.c:1407 +#, c-format +msgid "%s has died.\n" +msgstr "" + +#: ../engine.c:1431 +#, c-format +msgid "%s is the sole survivor!\n" +msgstr "" + +#: ../engine.c:1438 +#, c-format +msgid "%s has surrendered to %s!\n" +msgstr "" + +#: ../engine.c:1442 +#, c-format +msgid "All of %s's opponents have surrendered!\n" +msgstr "" + +#: ../engine.c:1451 +msgid "Everyone is dead!\n" +msgstr "" + +#: ../engine.c:1459 +#, c-format +msgid "%s finds that there is nobody left to surrender to!\n" +msgstr "" + +#: ../engine.c:1465 +msgid "The survivors have all surrendered to each other!\n" +msgstr "" + +#: ../engine.c:1467 +msgid "Everyone has surrendered to each other!\n" +msgstr "" + +#: ../espells.c:26 +msgid "Dispel Magic" +msgstr "" + +#: ../espells.c:27 +msgid "Summon Elemental" +msgstr "" + +#: ../espells.c:28 +msgid "Magic Mirror" +msgstr "" + +#: ../espells.c:29 ../espells.c:59 +msgid "Lightning Bolt" +msgstr "" + +#: ../espells.c:30 +msgid "Cure Heavy Wounds" +msgstr "" + +#: ../espells.c:31 +msgid "Cure Light Wounds" +msgstr "" + +#: ../espells.c:32 +msgid "Amnesia" +msgstr "" + +#: ../espells.c:33 +msgid "Confusion" +msgstr "" + +#: ../espells.c:34 +msgid "Disease" +msgstr "" + +#: ../espells.c:35 +msgid "Blindness" +msgstr "" + +#: ../espells.c:36 +msgid "Delayed Effect" +msgstr "" + +#: ../espells.c:37 +msgid "Raise Dead" +msgstr "" + +#: ../espells.c:38 +msgid "Poison" +msgstr "" + +#: ../espells.c:39 +msgid "Paralysis" +msgstr "" + +#: ../espells.c:40 +msgid "Summon Troll" +msgstr "" + +#: ../espells.c:41 +msgid "Fireball" +msgstr "" + +#: ../espells.c:42 +msgid "Shield" +msgstr "" + +#: ../espells.c:43 +msgid "SURRENDER" +msgstr "" + +#: ../espells.c:44 +msgid "Remove Enchantment" +msgstr "" + +#: ../espells.c:45 +msgid "Invisibility" +msgstr "" + +#: ../espells.c:46 +msgid "Charm Monster" +msgstr "" + +#: ../espells.c:47 +msgid "Charm Person" +msgstr "" + +#: ../espells.c:48 +msgid "Summon Ogre" +msgstr "" + +#: ../espells.c:49 +msgid "Finger of Death" +msgstr "" + +#: ../espells.c:50 +msgid "Haste" +msgstr "" + +#: ../espells.c:51 +msgid "Missile" +msgstr "" + +#: ../espells.c:52 +msgid "Summon Goblin" +msgstr "" + +#: ../espells.c:53 +msgid "Anti-Spell" +msgstr "" + +#: ../espells.c:54 +msgid "Permanency" +msgstr "" + +#: ../espells.c:55 +msgid "Time Stop" +msgstr "" + +#: ../espells.c:56 +msgid "Resist Cold" +msgstr "" + +#: ../espells.c:57 +msgid "Fear" +msgstr "" + +#: ../espells.c:58 +msgid "Fire Storm" +msgstr "" + +#: ../espells.c:60 +msgid "Cause Light Wounds" +msgstr "" + +#: ../espells.c:61 +msgid "Summon Giant" +msgstr "" + +#: ../espells.c:62 +msgid "Cause Heavy Wounds" +msgstr "" + +#: ../espells.c:63 ../espells.c:67 +msgid "Counter-Spell" +msgstr "" + +#: ../espells.c:64 +msgid "Ice Storm" +msgstr "" + +#: ../espells.c:65 +msgid "Resist Heat" +msgstr "" + +#: ../espells.c:66 +msgid "Protection From Evil" +msgstr "" + +#: ../etran.c:25 +msgid "" +"Spellcast Game Transcript\n" +"\n" +msgstr "" + +#: ../etran.c:90 +msgid " (Time Stop)" +msgstr "" + +#: ../etran.c:93 +msgid " (Haste)" +msgstr "" + +#: ../etran.c:100 +#, c-format +msgid "" +"\n" +"\tTurn %d%s:\n" +msgstr "" + +#: ../etran.c:108 +#, c-format +msgid "%s (%d): %c %c\n" +msgstr "" + +#: ../etran.c:113 +#, c-format +msgid "%s (%d): [no gestures]\n" +msgstr "" + +#: ../etran.c:122 +#, c-format +msgid "%s (%d)\n" +msgstr "" + +#: ../etran.c:126 +msgid "\n" +msgstr "" + +#: ../execute2.c:29 +#, c-format +msgid "The Amnesia spell curls around %s's mind.\n" +msgstr "" + +#: ../execute2.c:31 +msgid "The Amnesia spell curls around your mind.\n" +msgstr "" + +#: ../execute2.c:44 +#, c-format +msgid "The Confusion spell curls around %s's mind.\n" +msgstr "" + +#: ../execute2.c:46 +msgid "The Confusion spell curls around your mind.\n" +msgstr "" + +#: ../execute2.c:56 +#, c-format +msgid "The Fear spell curls around %s's mind.\n" +msgstr "" + +#: ../execute2.c:58 +msgid "The Fear spell curls around your mind.\n" +msgstr "" + +#: ../execute2.c:67 +#, c-format +msgid "" +"Not knowing which of %s's hands to strike, the Paralysis spell fizzles.\n" +msgstr "" + +#: ../execute2.c:68 +msgid "" +"Not knowing which of your hands to strike, the Paralysis spell fizzles.\n" +msgstr "" + +#: ../execute2.c:88 +#, c-format +msgid "The Paralysis spell curls around your %s hand.\n" +msgstr "" + +#: ../execute2.c:89 +#, c-format +msgid "The Paralysis spell curls around %s's %s hand.\n" +msgstr "" + +#: ../execute2.c:99 +#, c-format +msgid "The Paralysis spell curls around %s's mind.\n" +msgstr "" + +#. cast on a wizard +#: ../execute2.c:107 +#, c-format +msgid "The Charm Monster spell swirls around %s's mind, but cannot sink in.\n" +msgstr "" + +#: ../execute2.c:108 +msgid "The Charm Monster spell swirls around your mind, but cannot sink in.\n" +msgstr "" + +#: ../execute2.c:113 +#, c-format +msgid "" +"The Charm Monster spell strikes %s, and then seems to freeze. Referees stomp " +"into the arena and glare at the spell. Then they glare at each other. Then " +"they glare at the spell again. They huddle together, muttering and " +"glowering. Eventually they pick the spell up bodily and carry it off the " +"field.\n" +msgstr "" + +#: ../execute2.c:124 +#, c-format +msgid "The Charm Monster spell curls around %s, and %s smiles dopily at %s.\n" +msgstr "" + +#: ../execute2.c:134 +#, c-format +msgid "" +"Not knowing which of %s's hands to strike, the Charm Person spell fizzles.\n" +msgstr "" + +#: ../execute2.c:135 +msgid "" +"Not knowing which of your hands to strike, the Charm Person spell fizzles.\n" +msgstr "" + +#: ../execute2.c:152 +#, c-format +msgid "The Charm Person spell curls around your %s hand.\n" +msgstr "" + +#: ../execute2.c:153 +#, c-format +msgid "The Charm Person spell curls around %s's %s hand.\n" +msgstr "" + +#. cast on a monster +#: ../execute2.c:159 +#, c-format +msgid "The Charm Person spell swirls around %s's mind, but cannot sink in.\n" +msgstr "" + +#: ../execute2.c:169 +#, c-format +msgid "%s is still afflicted with Amnesia.\n" +msgstr "" + +#: ../execute2.c:171 +msgid "You are still afflicted with Amnesia.\n" +msgstr "" + +#: ../execute2.c:177 +#, c-format +msgid "%s is still afflicted with Fear.\n" +msgstr "" + +#: ../execute2.c:179 +msgid "You are still afflicted with Fear.\n" +msgstr "" + +#: ../execute2.c:188 +#, c-format +msgid "%s is still enamoured of %s.\n" +msgstr "" + +#: ../execute2.c:195 +#, c-format +msgid "%s is still afflicted with Confusion.\n" +msgstr "" + +#: ../execute2.c:197 +msgid "You are still afflicted with Confusion.\n" +msgstr "" + +#: ../execute2.c:205 +#, c-format +msgid "%s is still Charmed.\n" +msgstr "" + +#: ../execute2.c:206 +msgid "You are still Charmed.\n" +msgstr "" + +#: ../execute2.c:213 +#, c-format +msgid "%s's %s hand is still Paralyzed.\n" +msgstr "" + +#: ../execute2.c:214 +#, c-format +msgid "Your %s hand is still Paralyzed.\n" +msgstr "" + +#: ../execute2.c:218 +#, c-format +msgid "%s is still afflicted with Paralysis.\n" +msgstr "" + +#: ../execute2.c:226 +#, c-format +msgid "ERROR: unknown perm->mind_spell %d\n" +msgstr "" + +#: ../execute2.c:235 +#, c-format +msgid "%s sneezes loudly.\n" +msgstr "" + +#: ../execute2.c:237 +msgid "You sneeze loudly.\n" +msgstr "" + +#: ../execute2.c:247 +#, c-format +msgid "%s suddenly looks somewhat pale.\n" +msgstr "" + +#: ../execute2.c:249 +msgid "A flash of pain lances along your bones, and then fades away.\n" +msgstr "" + +#. cancelled +#: ../execute2.c:258 +#, c-format +msgid "The Anti-Spell fizzes away into nothing as it approaches %s.\n" +msgstr "" + +#: ../execute2.c:260 +msgid "The Anti-Spell fizzes away into nothing as it approaches you.\n" +msgstr "" + +#: ../execute2.c:266 +#, c-format +msgid "The Anti-Spell whizzes through %s without any effect.\n" +msgstr "" + +#: ../execute2.c:271 +#, c-format +msgid "" +"The Anti-Spell jolts %s, causing the magical energies around %s hands to " +"flicker.\n" +msgstr "" + +#: ../execute2.c:272 +msgid "" +"The Anti-Spell jolts you, interrupting the flow of magical energy in your " +"hands.\n" +msgstr "" + +#. cancelled +#: ../execute2.c:282 +#, c-format +msgid "The Delayed Effect fizzes away into nothing as it approaches %s.\n" +msgstr "" + +#: ../execute2.c:284 +msgid "The Delayed Effect fizzes away into nothing as it approaches you.\n" +msgstr "" + +#: ../execute2.c:290 +#, c-format +msgid "The Delayed Effect whizzes through %s without any effect.\n" +msgstr "" + +#: ../execute2.c:295 +#, c-format +msgid "The Delayed Effect spreads out around %s.\n" +msgstr "" + +#: ../execute2.c:296 +msgid "" +"The Delayed Effect spreads out in a cloud around you, waiting for you to " +"complete a spell.\n" +msgstr "" + +#. cancelled +#: ../execute2.c:305 +#, c-format +msgid "The Permanency fizzes away into nothing as it approaches %s.\n" +msgstr "" + +#: ../execute2.c:307 +msgid "The Permanency fizzes away into nothing as it approaches you.\n" +msgstr "" + +#: ../execute2.c:313 +#, c-format +msgid "The Permanency whizzes through %s without any effect.\n" +msgstr "" + +#: ../execute2.c:318 +#, c-format +msgid "The Permanency spreads out around %s.\n" +msgstr "" + +#: ../execute2.c:319 +msgid "" +"The Permanency spreads out in a cloud around you, waiting for you to " +"complete a spell.\n" +msgstr "" + +#. not yet blind +#: ../execute2.c:328 +#, c-format +msgid "%s blinks, then stumbles slightly as %s eyes turn milky.\n" +msgstr "" + +#: ../execute2.c:330 +msgid "" +"A haze suddenly appears before your eyes. The world dims rapidly, and you " +"are shortly enveloped in total darkness.\n" +msgstr "" + +#: ../execute2.c:336 +#, c-format +msgid "%s is still blind.\n" +msgstr "" + +#: ../execute2.c:338 +msgid "You are still blind.\n" +msgstr "" + +#: ../execute2.c:348 +#, c-format +msgid "The milky cast fades from %s's eyes.\n" +msgstr "" + +#: ../execute2.c:350 +msgid "The dark veil falls away from your eyes.\n" +msgstr "" + +#. not yet invisible +#: ../execute2.c:359 +#, c-format +msgid "%s turns quietly translucent, and fades from view.\n" +msgstr "" + +#: ../execute2.c:361 +msgid "" +"The world becomes strangely misted in front of your eyes. Looking down, you " +"see that your hands are no longer visible.\n" +msgstr "" + +#: ../execute2.c:367 +#, c-format +msgid "%s is still invisible.\n" +msgstr "" + +#: ../execute2.c:369 +msgid "You are still invisible.\n" +msgstr "" + +#: ../execute2.c:379 +#, c-format +msgid "A %s-shaped shadow appears, and %s rapidly becomes fully visible.\n" +msgstr "" + +#: ../execute2.c:381 +msgid "Your limbs have become visible again.\n" +msgstr "" + +#: ../execute2.c:406 +#, c-format +msgid "The Remove Enchantment whirls its dissipative energies around %s.\n" +msgstr "" + +#: ../execute2.c:408 +msgid "The Remove Enchantment whirls its dissipative energies around you.\n" +msgstr "" + +#: ../execute2.c:414 +#, c-format +msgid "You are freed of the %s.\n" +msgstr "" + +#: ../execute2.c:415 ../execute2.c:425 +#, c-format +msgid "%s is freed of the %s.\n" +msgstr "" + +#: ../execute2.c:432 +msgid "Your blue aura of Resist Heat fades away.\n" +msgstr "" + +#: ../execute2.c:433 +#, c-format +msgid "%s's blue aura of Resist Heat fades away.\n" +msgstr "" + +#: ../execute2.c:443 +msgid "Your pink aura of Resist Cold fades away.\n" +msgstr "" + +#: ../execute2.c:444 +#, c-format +msgid "%s's pink aura of Resist Cold fades away.\n" +msgstr "" + +#: ../execute2.c:454 ../execute2.c:874 +#, c-format +msgid "" +"%s seems to have stopped shivering, and %s skin is no longer flushed and " +"damp.\n" +msgstr "" + +#: ../execute2.c:456 ../execute2.c:876 +msgid "Your fever suddenly abates. You feel much better.\n" +msgstr "" + +#: ../execute2.c:463 +#, c-format +msgid "%s's color improves dramatically.\n" +msgstr "" + +#: ../execute2.c:465 +msgid "" +"The numbness and heaviness falls from your limbs. You feel much better.\n" +msgstr "" + +#: ../execute2.c:473 +#, c-format +msgid "The Delayed Effect spell hovering around %s disintegrates.\n" +msgstr "" + +#: ../execute2.c:475 +msgid "The Delayed Effect spell hovering around you disintegrates.\n" +msgstr "" + +#: ../execute2.c:482 +#, c-format +msgid "The %s spell that you had caught in a Delayed Effect is lost.\n" +msgstr "" + +#: ../execute2.c:483 +#, c-format +msgid "The %s spell that %s had caught in a Delayed Effect is lost.\n" +msgstr "" + +#: ../execute2.c:491 +#, c-format +msgid "The Permanency spell hovering around %s disintegrates.\n" +msgstr "" + +#: ../execute2.c:493 +msgid "The Permanency spell hovering around you disintegrates.\n" +msgstr "" + +#: ../execute2.c:501 +#, c-format +msgid "%s's circle of Protection flickers out.\n" +msgstr "" + +#: ../execute2.c:503 +msgid "Your circle of Protection flickers out.\n" +msgstr "" + +#: ../execute2.c:522 +#, c-format +msgid "The Haste on %s is nulled.\n" +msgstr "" + +#: ../execute2.c:524 +msgid "The Haste on you is nulled.\n" +msgstr "" + +#: ../execute2.c:532 +#, c-format +msgid "The Time Stop on %s is nulled.\n" +msgstr "" + +#: ../execute2.c:534 +msgid "The Time Stop on you is nulled.\n" +msgstr "" + +#: ../execute2.c:541 +#, c-format +msgid "%s becomes visible again, rather suddenly.\n" +msgstr "" + +#: ../execute2.c:543 +msgid "Your body tingles and becomes visible again.\n" +msgstr "" + +#: ../execute2.c:550 +#, c-format +msgid "%s's eyes abruptly clear.\n" +msgstr "" + +#: ../execute2.c:552 +msgid "Sight bursts in upon you again.\n" +msgstr "" + +#: ../execute2.c:576 +#, c-format +msgid "The knife slides off of %s's Shield.\n" +msgstr "" + +#: ../execute2.c:578 +msgid "The knife slides off of your Shield.\n" +msgstr "" + +#: ../execute2.c:583 +#, c-format +msgid "The knives slide off of %s's Shield.\n" +msgstr "" + +#: ../execute2.c:585 +msgid "The knives slide off of your Shield.\n" +msgstr "" + +#: ../execute2.c:593 +#, c-format +msgid "The knife strikes %s.\n" +msgstr "" + +#: ../execute2.c:595 +msgid "The knife strikes you.\n" +msgstr "" + +#: ../execute2.c:600 +#, c-format +msgid "The %s knives strike you.\n" +msgstr "" + +#: ../execute2.c:601 +#, c-format +msgid "The %s knives strike %s.\n" +msgstr "" + +#: ../execute2.c:615 +#, c-format +msgid "The Missile shatters on %s's Shield.\n" +msgstr "" + +#: ../execute2.c:617 +msgid "The Missile shatters on your Shield.\n" +msgstr "" + +#: ../execute2.c:622 +#, c-format +msgid "The Missiles shatter on %s's Shield.\n" +msgstr "" + +#: ../execute2.c:624 +msgid "The Missiles shatter on your Shield.\n" +msgstr "" + +#: ../execute2.c:632 +#, c-format +msgid "The Missile strikes %s.\n" +msgstr "" + +#: ../execute2.c:634 +msgid "The Missile strikes you.\n" +msgstr "" + +#: ../execute2.c:639 +#, c-format +msgid "The %s Missiles strike you.\n" +msgstr "" + +#: ../execute2.c:640 +#, c-format +msgid "The %s Missiles strike %s.\n" +msgstr "" + +#: ../execute2.c:653 +#, c-format +msgid "The Cause Light Wounds spell tears into %s.\n" +msgstr "" + +#: ../execute2.c:655 +msgid "The Cause Light Wounds spell tears into you.\n" +msgstr "" + +#: ../execute2.c:660 +#, c-format +msgid "The %s Cause Light Wounds spells tear into you.\n" +msgstr "" + +#: ../execute2.c:661 +#, c-format +msgid "The %s Cause Light Wounds spells tear into %s.\n" +msgstr "" + +#: ../execute2.c:673 +#, c-format +msgid "The Cause Heavy Wounds spell tears into %s.\n" +msgstr "" + +#: ../execute2.c:675 +msgid "The Cause Heavy Wounds spell tears painfully into you.\n" +msgstr "" + +#: ../execute2.c:680 +#, c-format +msgid "The %s Cause Heavy Wounds spells tear painfully into you.\n" +msgstr "" + +#: ../execute2.c:681 +#, c-format +msgid "The %s Cause Heavy Wounds spells tear into %s.\n" +msgstr "" + +#: ../execute2.c:693 +#, c-format +msgid "The Lightning Bolt staggers %s.\n" +msgstr "" + +#: ../execute2.c:695 +msgid "The Lightning Bolt strikes you, staggering and nearly deafening you.\n" +msgstr "" + +#: ../execute2.c:700 +#, c-format +msgid "" +"The %s Lightning Bolts crash into you; the concussions nearly knock you off " +"your feet.\n" +msgstr "" + +#: ../execute2.c:701 +#, c-format +msgid "The %s Lightning Bolts strike %s, staggering %s.\n" +msgstr "" + +#: ../execute2.c:714 +#, c-format +msgid "" +"The Fireball strikes %s, but the flames slide off %s Resist Heat aura.\n" +msgstr "" + +#: ../execute2.c:716 +msgid "The Fireball strikes you, but you feel only a slight warmth.\n" +msgstr "" + +#: ../execute2.c:721 +#, c-format +msgid "" +"The Fireballs strike %s, but the flames slide off %s Resist Heat aura.\n" +msgstr "" + +#: ../execute2.c:723 +msgid "The Fireballs strike you, but you feel only a slight warmth.\n" +msgstr "" + +#: ../execute2.c:731 +#, c-format +msgid "The Fireball strikes %s.\n" +msgstr "" + +#: ../execute2.c:733 +msgid "The Fireball strikes you with a roar of flame.\n" +msgstr "" + +#: ../execute2.c:738 +#, c-format +msgid "The %s Fireballs blast into you, surrounding you with blinding flame.\n" +msgstr "" + +#: ../execute2.c:739 +#, c-format +msgid "The %s Fireballs strike %s.\n" +msgstr "" + +#. counterspelled +#: ../execute2.c:752 +#, c-format +msgid "The Counter-Spell around %s cancels the Fire Storm near %s.\n" +msgstr "" + +#: ../execute2.c:754 +msgid "The Counter-Spell cancels the Fire Storm in your vicinity.\n" +msgstr "" + +#. heat-resistant +#: ../execute2.c:760 +#, c-format +msgid "" +"The Fire Storm washes over %s, who remains unharmed inside %s blue aura.\n" +msgstr "" + +#: ../execute2.c:762 +msgid "The Fire Storm washes over you, but you feel only a gentle warmth.\n" +msgstr "" + +#. hit +#: ../execute2.c:768 +#, c-format +msgid "The Fire Storm washes over %s.\n" +msgstr "" + +#: ../execute2.c:770 +msgid "The Fire Storm washes over you.\n" +msgstr "" + +#. counterspelled +#: ../execute2.c:780 +#, c-format +msgid "The Counter-Spell around %s cancels the Ice Storm near %s.\n" +msgstr "" + +#: ../execute2.c:782 +msgid "The Counter-Spell cancels the Ice Storm in your vicinity.\n" +msgstr "" + +#. cold-resistant +#: ../execute2.c:791 +#, c-format +msgid "" +"The Ice Storm washes over %s, who remains unharmed inside %s pink aura.\n" +msgstr "" + +#: ../execute2.c:793 +msgid "The Ice Storm washes over you, but you feel only a gentle coolness.\n" +msgstr "" + +#. hit +#: ../execute2.c:799 +#, c-format +msgid "The Ice Storm lashes at %s.\n" +msgstr "" + +#: ../execute2.c:801 +msgid "The Ice Storm lashes at you.\n" +msgstr "" + +#. hit +#: ../execute2.c:810 +#, c-format +msgid "%s turns very pale and drops to %s knees, clutching at %s chest....\n" +msgstr "" + +#: ../execute2.c:812 +msgid "" +"You feel a sudden pressure in your chest, as if an iron band was squeezing " +"your heart. You fall to your knees as the world dims....\n" +msgstr "" + +#: ../execute2.c:836 +#, c-format +msgid "The Cure Light Wounds spell weaves around %s, and %s wounds fade.\n" +msgstr "" + +#: ../execute2.c:838 +msgid "" +"The Cure Light Wounds spell weaves around you, and the pain of your wounds " +"lessens.\n" +msgstr "" + +#: ../execute2.c:843 +#, c-format +msgid "" +"The %s Cure Light Wounds spells weave around you, and the pain of your " +"wounds lessens.\n" +msgstr "" + +#: ../execute2.c:844 +#, c-format +msgid "The %s Cure Light Wounds spells weave around %s, and %s wounds fade.\n" +msgstr "" + +#: ../execute2.c:856 +#, c-format +msgid "The Cure Heavy Wounds spell weaves around %s, and %s wounds heal.\n" +msgstr "" + +#: ../execute2.c:858 +msgid "" +"The Cure Heavy Wounds spell weaves around you, and your wounds heal " +"considerably.\n" +msgstr "" + +#: ../execute2.c:863 +#, c-format +msgid "" +"The %s Cure Heavy Wounds spells weave around you, and your wounds heal " +"considerably.\n" +msgstr "" + +#: ../execute2.c:864 +#, c-format +msgid "The %s Cure Heavy Wounds spells weave around %s, and %s wounds heal.\n" +msgstr "" + +#: ../execute2.c:885 +#, c-format +msgid "" +"The Raise Dead spell burns through %s. Although %s is not dead, the spell " +"has a powerful healing effect.\n" +msgstr "" + +#: ../execute2.c:887 +msgid "" +"The Raise Dead spell burns through you. Although you aren't dead, the spell " +"has a powerful healing influence.\n" +msgstr "" + +#: ../execute2.c:892 +#, c-format +msgid "" +"The %s Raise Dead spells burn through you. Although you aren't dead, the " +"spells have a powerful healing influence.\n" +msgstr "" + +#: ../execute2.c:893 +#, c-format +msgid "" +"The %s Raise Dead spells burn through %s. Although %s is not dead, the " +"spells have a powerful healing effect.\n" +msgstr "" + +#: ../execute2.c:906 +#, c-format +msgid "%s is in perfect health again.\n" +msgstr "" + +#: ../execute2.c:908 +msgid "You are in perfect health again.\n" +msgstr "" + +#: ../execute2.c:916 +#, c-format +msgid "" +"%s twitches, glows, and then jumps to %s feet! Except for a bit of incipient " +"mold, %s is in perfect health again.\n" +msgstr "" + +#: ../execute2.c:918 +msgid "" +"You are suddenly aware of a blast of energy running down every nerve! This " +"is something of a shock, since you had just gotten used to being dead. Oh, " +"well -- you'll be back eventually.\n" +msgstr "" + +#: ../execute.c:111 +#, c-format +msgid "ERROR: do not know how to permanent %d.\n" +msgstr "" + +#: ../execute.c:122 +msgid "itself" +msgstr "" + +#: ../execute.c:124 +msgid "himself" +msgstr "" + +#: ../execute.c:126 +msgid "herself" +msgstr "" + +#: ../execute.c:128 +msgid "hirself" +msgstr "" + +#: ../execute.c:130 +msgid "ERROR-himself" +msgstr "" + +#: ../execute.c:139 ../execute.c:156 +msgid "it" +msgstr "" + +#: ../execute.c:141 +msgid "him" +msgstr "" + +#: ../execute.c:143 ../execute.c:177 +msgid "her" +msgstr "" + +#: ../execute.c:145 ../execute.c:179 +msgid "hir" +msgstr "" + +#: ../execute.c:147 +msgid "ERROR-him" +msgstr "" + +#: ../execute.c:158 +msgid "he" +msgstr "" + +#: ../execute.c:160 +msgid "she" +msgstr "" + +#: ../execute.c:162 +msgid "ke" +msgstr "" + +#: ../execute.c:164 +msgid "ERROR-he" +msgstr "" + +#: ../execute.c:173 +msgid "its" +msgstr "" + +#: ../execute.c:175 +msgid "his" +msgstr "" + +#: ../execute.c:181 +msgid "ERROR-his" +msgstr "" + +#: ../execute.c:192 +msgid "zero" +msgstr "" + +#: ../execute.c:194 +msgid "one" +msgstr "" + +#: ../execute.c:196 +msgid "two" +msgstr "" + +#: ../execute.c:198 +msgid "three" +msgstr "" + +#: ../execute.c:200 +msgid "four" +msgstr "" + +#: ../execute.c:202 +msgid "five" +msgstr "" + +#: ../execute.c:204 +msgid "six" +msgstr "" + +#: ../execute.c:206 +msgid "seven" +msgstr "" + +#: ../execute.c:208 +msgid "eight" +msgstr "" + +#: ../execute.c:210 +msgid "nine" +msgstr "" + +#: ../execute.c:212 +msgid "ten" +msgstr "" + +#: ../execute.c:214 ../stupid.c:518 +#, c-format +msgid "%d" +msgstr "" + +#: ../execute.c:238 +#, c-format +msgid "%s %s" +msgstr "" + +#: ../execute.c:256 +#, c-format +msgid "You are unable to see %s; your %s goes wild.\n" +msgstr "" + +#: ../execute.c:257 +#, c-format +msgid "%s is unable to see you; %s %s goes wild.\n" +msgstr "" + +#: ../execute.c:258 +#, c-format +msgid "%s is unable to see %s; %s %s goes wild.\n" +msgstr "" + +#: ../execute.c:281 +msgid "with the left hand" +msgstr "" + +#: ../execute.c:284 +msgid "with the right hand" +msgstr "" + +#: ../execute.c:287 ../stupid.c:305 +msgid "with both hands" +msgstr "" + +#: ../execute.c:290 +msgid "from a Delayed Effect" +msgstr "" + +#: ../execute.c:293 +msgid "ERROR:BOTH??? hands" +msgstr "" + +#: ../execute.c:296 +msgid "ERROR:NEITHER??? hand" +msgstr "" + +#: ../execute.c:301 +msgid "over the arena" +msgstr "" + +#: ../execute.c:304 +msgid "up into the air" +msgstr "" + +#: ../execute.c:308 +msgid "at " +msgstr "" + +#: ../execute.c:323 +#, c-format +msgid "at %s" +msgstr "" + +#: ../execute.c:328 +#, c-format +msgid "%s stabs (%s) %s.\n" +msgstr "" + +#: ../execute.c:330 +#, c-format +msgid "%s casts %s%s (%s) %s.\n" +msgstr "" + +#: ../execute.c:330 +msgid "Permanent " +msgstr "" + +#: ../execute.c:382 +msgid "The magical energies in the arena fade away.\n" +msgstr "" + +#: ../execute.c:431 ../execute.c:507 ../execute.c:591 ../execute.c:601 +#, c-format +msgid "The %s is dispelled.\n" +msgstr "" + +#: ../execute.c:448 ../execute.c:525 +#, c-format +msgid "The %s is destroyed by your Counter-Spell.\n" +msgstr "" + +#: ../execute.c:449 ../execute.c:526 +#, c-format +msgid "The %s is destroyed by the Counter-Spell around %s.\n" +msgstr "" + +#: ../execute.c:499 +#, c-format +msgid "%s's Lightning Bolt fizzles.\n" +msgstr "" + +#: ../execute.c:500 +msgid "" +"Since you have already cast Lightning Bolt with that formulation, the spell " +"fizzles.\n" +msgstr "" + +#: ../execute.c:543 +#, c-format +msgid "" +"Your %s is reflected back and forth between %s's Magic Mirror and your own! " +"It rapidly decays and dissipates.\n" +msgstr "" + +#: ../execute.c:544 +#, c-format +msgid "" +"%s's %s is reflected back and forth between your Magic Mirror and %s own! It " +"rapidly decays and dissipates.\n" +msgstr "" + +#: ../execute.c:545 +#, c-format +msgid "" +"%s's %s is reflected back and forth between %s's Magic Mirror and %s own! It " +"rapidly decays and dissipates.\n" +msgstr "" + +#: ../execute.c:553 +#, c-format +msgid "Your %s is reflected from %s's Magic Mirror back at you.\n" +msgstr "" + +#: ../execute.c:554 +#, c-format +msgid "%s's %s reflects from your Magic Mirror back at %s.\n" +msgstr "" + +#: ../execute.c:555 +#, c-format +msgid "%s's %s reflects from %s's Magic Mirror back at %s.\n" +msgstr "" + +#: ../execute.c:571 +#, c-format +msgid "The reflected %s is destroyed by your Counter-Spell.\n" +msgstr "" + +#: ../execute.c:572 +#, c-format +msgid "The reflected %s is destroyed by the Counter-Spell around %s.\n" +msgstr "" + +#: ../execute.c:609 +msgid "ERROR: Surrender got through to spell table setup\n" +msgstr "" + +#: ../execute.c:620 +msgid "ERROR: Unknown spell in spell table setup\n" +msgstr "" + +#: ../execute.c:718 +#, c-format +msgid "The Counter-Spell on %s is dispelled.\n" +msgstr "" + +#: ../execute.c:720 +msgid "The Counter-Spell on you is dispelled.\n" +msgstr "" + +#: ../execute.c:726 +#, c-format +msgid "The Magic Mirror on %s is dispelled.\n" +msgstr "" + +#: ../execute.c:728 +msgid "The Magic Mirror on you is dispelled.\n" +msgstr "" + +#: ../execute.c:736 +#, c-format +msgid "The Dispel Magic starts to tear %s apart.\n" +msgstr "" + +#: ../execute.c:742 +#, c-format +msgid "The corpse of %s disintegrates, destroyed by the Dispel Magic.\n" +msgstr "" + +#. auto-shield +#: ../execute.c:753 +#, c-format +msgid "A Counter-Spell flares around %s.\n" +msgstr "" + +#: ../execute.c:755 +msgid "Your magical senses go numb as a Counter-Spell surrounds you.\n" +msgstr "" + +#: ../execute.c:762 +#, c-format +msgid "The Magic Mirror on %s is destroyed by the Counter-Spell.\n" +msgstr "" + +#: ../execute.c:764 +msgid "The Magic Mirror on you is destroyed by the Counter-Spell.\n" +msgstr "" + +#: ../execute.c:773 +#, c-format +msgid "A Magic Mirror swirls around %s.\n" +msgstr "" + +#: ../execute.c:775 +msgid "The bright haze of a Magic Mirror surrounds you.\n" +msgstr "" + +#: ../execute.c:801 +#, c-format +msgid "Your %s materializes by your side.\n" +msgstr "" + +#: ../execute.c:802 +#, c-format +msgid "%s's %s appears by %s side.\n" +msgstr "" + +#: ../execute.c:809 +#, c-format +msgid "Your %s %ss materialize by your side.\n" +msgstr "" + +#: ../execute.c:810 +#, c-format +msgid "%s's %s %ss appear by %s side.\n" +msgstr "" + +#: ../execute.c:825 +msgid "A blazing Fire Elemental materializes above you.\n" +msgstr "" + +#: ../execute.c:826 +#, c-format +msgid "A blazing Fire Elemental materializes above %s.\n" +msgstr "" + +#: ../execute.c:829 +msgid "A glittering Ice Elemental materializes above you.\n" +msgstr "" + +#: ../execute.c:830 +#, c-format +msgid "A glittering Ice Elemental materializes above %s.\n" +msgstr "" + +#: ../execute.c:877 +#, c-format +msgid "The %s Fire Elementals merge into single raging form.\n" +msgstr "" + +#: ../execute.c:881 +#, c-format +msgid "The %s Ice Elementals merge into single whirling form.\n" +msgstr "" + +#. 0101 +#: ../execute.c:892 +msgid "The Fire Elemental is dispersed into the Fire Storm.\n" +msgstr "" + +#. 1010 +#: ../execute.c:897 +msgid "The Ice Elemental is dispersed into the Ice Storm.\n" +msgstr "" + +#. 1100 +#: ../execute.c:902 +msgid "The Fire and Ice Storms tear each other into shreds of vapor.\n" +msgstr "" + +#. 0011 +#: ../execute.c:907 +msgid "" +"The Fire and Ice Elementals tear into each other, and whirl into a column of " +"steam that dissipates in moments.\n" +msgstr "" + +#. 0110 +#: ../execute.c:914 +msgid "The Ice Elemental is dispersed into the Fire Storm, destroying both.\n" +msgstr "" + +#. 1001 +#: ../execute.c:920 +msgid "The Fire Elemental is dispersed into the Ice Storm, destroying both.\n" +msgstr "" + +#. 1101 +#: ../execute.c:926 +msgid "" +"The Fire and Ice Storms tear each other into shreds of vapor, destroying the " +"Fire Elemental as well.\n" +msgstr "" + +#. 1110 +#: ../execute.c:933 +msgid "" +"The Fire and Ice Storms tear each other into shreds of vapor, destroying the " +"Ice Elemental as well.\n" +msgstr "" + +#. 1011 +#: ../execute.c:940 +msgid "" +"The Fire and Ice Elementals tear into each other, and whirl into a column of " +"steam that dissipates in moments. The Ice Storm is absorbed as well.\n" +msgstr "" + +#. 0111 +#: ../execute.c:948 +msgid "" +"The Fire and Ice Elementals tear into each other, and whirl into a column of " +"steam that dissipates in moments. The Fire Storm is absorbed as well.\n" +msgstr "" + +#. 1111 +#: ../execute.c:956 +msgid "" +"The Fire and Ice Elementals whirl into each other, screaming in fury, and " +"the Fire and Ice storms shriek in response. The column of Elemental energy " +"rises to meet the cloud of vapor that descends over the arena. You are " +"buffeted by the conflicting energies; but within moments, nothing remains.\n" +msgstr "" + +#: ../execute.c:973 +#, c-format +msgid "%s gutters and flickers out under the influence of the Resist Heat.\n" +msgstr "" + +#: ../execute.c:980 +#, c-format +msgid "%s melts away under the influence of the Resist Cold.\n" +msgstr "" + +#: ../execute.c:985 +#, c-format +msgid "%s is vaporized by the Fireball.\n" +msgstr "" + +#: ../execute.c:991 +#, c-format +msgid "" +"Under the stress of the Blindness, %s shivers and disintegrates into random " +"energies.\n" +msgstr "" + +#: ../execute.c:996 +#, c-format +msgid "" +"Under the stress of the Invisibility, %s shivers and disintegrates into " +"random energies.\n" +msgstr "" + +#: ../execute.c:1008 +#, c-format +msgid "The Remove Enchantment starts to tear %s apart.\n" +msgstr "" + +#: ../execute.c:1028 +#, c-format +msgid "" +"The Finger of Death and Raise Dead spells aimed at %s cancel each other.\n" +msgstr "" + +#: ../execute.c:1030 +msgid "" +"For a moment, you feel a sudden pressure in your chest, as if an iron band " +"was squeezing your heart. Then it fades, as the Raise Dead spell burns " +"through you.\n" +msgstr "" + +#: ../execute.c:1038 +#, c-format +msgid "" +"The Fireball hurtling towards %s is snuffed by the Ice Storm, leaving %s " +"enveloped in a cloud of steam.\n" +msgstr "" + +#: ../execute.c:1040 +msgid "" +"The Fireball hurtling towards you is snuffed by the Ice Storm, leaving you " +"enveloped in warm steam.\n" +msgstr "" + +#: ../execute.c:1061 +#, c-format +msgid "" +"The mind-control spells (%s) aimed at you interfere with each other and " +"fizzle, leaving you with a pounding headache.\n" +msgstr "" + +#: ../execute.c:1062 +#, c-format +msgid "" +"The mind-control spells (%s) aimed at %s interfere with each other and " +"fizzle.\n" +msgstr "" + +#: ../execute.c:1093 +#, c-format +msgid "The Resist Heat shrouds %s in a cool blue veil.\n" +msgstr "" + +#: ../execute.c:1095 +msgid "The Resist Heat wraps you in a pleasant blue coolness.\n" +msgstr "" + +#: ../execute.c:1101 +#, c-format +msgid "%s's veil of Resist Heat continues to glow coolly.\n" +msgstr "" + +#: ../execute.c:1103 +msgid "Your veil of Resist Heat continues to glow coolly.\n" +msgstr "" + +#: ../execute.c:1112 +#, c-format +msgid "The Resist Cold shrouds %s in a warm pink veil.\n" +msgstr "" + +#: ../execute.c:1114 +msgid "The Resist Cold wraps you in a pleasant pink warmth.\n" +msgstr "" + +#: ../execute.c:1120 +#, c-format +msgid "%s's veil of Resist Cold continues to glow warmly.\n" +msgstr "" + +#: ../execute.c:1122 +msgid "Your veil of Resist Cold continues to glow warmly.\n" +msgstr "" + +#: ../execute.c:1130 +msgid "" +"A white circle of Protection from Evil springs up around you. You feel the " +"Shield aura cloaking your skin.\n" +msgstr "" + +#: ../execute.c:1131 +#, c-format +msgid "A white circle of Protection from Evil springs up around %s.\n" +msgstr "" + +#: ../execute.c:1138 +msgid "Your circle of Protection from Evil flares back to full strength.\n" +msgstr "" + +#: ../execute.c:1139 +#, c-format +msgid "%s's circle of Protection from Evil flares back to full strength.\n" +msgstr "" + +#: ../execute.c:1162 +msgid "Your circle of Protection from Evil is beginning to fade.\n" +msgstr "" + +#: ../execute.c:1163 +#, c-format +msgid "%s's circle of Protection from Evil is beginning to fade.\n" +msgstr "" + +#: ../execute.c:1166 +msgid "Your circle of Protection from Evil is dimmer now.\n" +msgstr "" + +#: ../execute.c:1167 +#, c-format +msgid "%s's circle of Protection from Evil is dimmer now.\n" +msgstr "" + +#: ../execute.c:1170 +msgid "Your circle of Protection from Evil is nearly gone.\n" +msgstr "" + +#: ../execute.c:1171 +#, c-format +msgid "%s's circle of Protection from Evil is nearly gone.\n" +msgstr "" + +#: ../main.c:98 +msgid "usage: spellcast RemoteDisplay [ RemoteDisplay2 ... ]\n" +msgstr "modo de uso: spellcast DisplayRemoto [ DisplayRemoto2 ....]\n" + +#: ../main.c:121 ../stupid.c:491 +#, c-format +msgid "You have listed only %d players!\n" +msgstr "" + +#: ../main.c:125 ../stupid.c:495 +#, c-format +msgid "There is a maximum of %d players!\n" +msgstr "" + +#: ../main.c:139 +msgid "spellcast: exiting.\n" +msgstr "spellcast: terminando.\n" + +#: ../main.c:162 +msgid "Enter your gestures for your Hastened move." +msgstr "" + +#: ../main.c:166 +msgid "Enter your gestures for your Time-Stopped move." +msgstr "" + +#: ../main.c:171 +msgid "Enter your gestures for this move, at the bottom of your gesture list." +msgstr "" + +#: ../main.c:178 +msgid "Other people are Hastened this turn." +msgstr "Otros jugadores están acelerados este turno." + +#: ../main.c:182 +msgid "You are frozen in time." +msgstr "Está congelado en el tiempo" + +#: ../main.c:185 +msgid "You are out of the game." +msgstr "Está fuera del juego." + +#: ../main.c:210 +msgid "" +"\n" +"+++ The game is a draw +++\n" +msgstr "" +"\n" +"+++ El juego termina en empate +++\n" + +#: ../main.c:212 +#, c-format +msgid "" +"\n" +"+++ %s has won +++\n" +msgstr "" +"\n" +"+++ %s ha ganado +++\n" + +#: ../main.c:228 +msgid "Do you want to save a transcript of this game?" +msgstr "¿Quiere guardar una transcripción de este juego?" + +#: ../main.c:229 +msgid "No" +msgstr "No" + +#: ../main.c:245 +#, c-format +msgid "spellcast: unable to open %s for writing\n" +msgstr "spellcast: incapaz de abrir %s para escribir\n" + +#: ../main.c:246 +msgid "spellcast: error" +msgstr "spellcast: error" + +#: ../main.c:251 +#, c-format +msgid "Saved transcript in %s.\n" +msgstr "Salvada transcripción en %s.\n" + +#: ../main.c:280 +#, c-format +msgid "spellcast: could not open display for player %d.\n" +msgstr "" + +#: ../main.c:346 ../stupid.c:227 ../stupid.c:318 +msgid "nobody" +msgstr "nadie" + +#: ../main.c:348 +msgid "Nobody" +msgstr "Nadie" + +#: ../main.c:360 +#, c-format +msgid "spellcast: the name '%s' for player %d is taken. Switching to '%s'...\n" +msgstr "" + +#: ../main.c:377 ../main.c:382 +#, c-format +msgid "spellcast: could not find font %s for player %d. Switching to %s...\n" +msgstr "" + +#: ../main.c:386 +#, c-format +msgid "spellcast: could not find font %s for player %d.\n" +msgstr "" + +#: ../main.c:412 +msgid "colour" +msgstr "color" + +#: ../main.c:415 +#, c-format +msgid "spellcast: font colour is %s\n" +msgstr "" + +#: ../main.c:464 +msgid "ERROR: backing store already on\n" +msgstr "" + +#: ../main.c:476 +msgid "ERROR: backing store already off\n" +msgstr "" + +#: ../makelist.c:25 +msgid "showpalm" +msgstr "" + +#: ../makelist.c:28 +msgid "showdigit" +msgstr "" + +#: ../makelist.c:31 +msgid "showfinger" +msgstr "" + +#: ../makelist.c:34 +msgid "showwave" +msgstr "" + +#: ../makelist.c:37 +msgid "showsnap" +msgstr "" + +#: ../makelist.c:40 +msgid "showclap" +msgstr "" + +#: ../makelist.c:43 +msgid "showpalm2" +msgstr "" + +#: ../makelist.c:46 +msgid "showdigit2" +msgstr "" + +#: ../makelist.c:49 +msgid "showfinger2" +msgstr "" + +#: ../makelist.c:52 +msgid "showwave2" +msgstr "" + +#: ../makelist.c:55 +msgid "showsnap2" +msgstr "" + +#: ../makelist.c:58 +msgid "showclap2" +msgstr "" + +#: ../makelist.c:87 +#, c-format +msgid "%d %d %s\n" +msgstr "" + +#: ../makelist.c:90 +#, c-format +msgid "%d %d moveto %d %d lineto stroke\n" +msgstr "" + +#: ../makelist.c:92 +#, c-format +msgid "%d %d moveto (%s) show\n" +msgstr "" + +#: ../makelist.c:104 +msgid "/Times-Roman findfont 12 scalefont setfont\n" +msgstr "" + +#: ../makelist.c:105 +msgid "0.5 setlinewidth\n" +msgstr "" + +#: ../makelist.c:110 +msgid "/Times-Bold findfont 14 scalefont setfont\n" +msgstr "" + +#: ../makelist.c:112 +msgid "(SpellCast spell lists -- sorted by gesture and name) centershow\n" +msgstr "" + +#: ../makelist.c:113 +msgid "" +"\n" +"showpage\n" +msgstr "" + +#: ../stupid.c:32 ../stupid.c:48 ../stupid.c:52 +#, c-format +msgid "%d: " +msgstr "" + +#: ../stupid.c:36 +#, c-format +msgid "~%d: " +msgstr "" + +#: ../stupid.c:56 +#, c-format +msgid "~%d/~%d: " +msgstr "" + +#: ../stupid.c:85 +#, c-format +msgid "" +"%d: Do you want to release the %s from the Delayed Effect?\n" +" (0:no, 1:yes): " +msgstr "" + +#: ../stupid.c:92 ../stupid.c:132 ../stupid.c:149 ../stupid.c:166 +msgid " [Please enter 0 or 1]: " +msgstr "" + +#: ../stupid.c:102 +msgid "What spell do you want to cast with your left hand?" +msgstr "" + +#: ../stupid.c:104 +msgid "What spell do you want to cast with your right hand?" +msgstr "" + +#: ../stupid.c:106 +#, c-format +msgid "" +"%d: %s\n" +" (" +msgstr "" + +#: ../stupid.c:109 +#, c-format +msgid "%d: %s%s%s" +msgstr "" + +#: ../stupid.c:110 +msgid " [both hands]" +msgstr " [ambas manos]" + +#: ../stupid.c:117 ../stupid.c:257 ../stupid.c:286 ../stupid.c:362 +#, c-format +msgid " [Please enter a number from 0 to %d]: " +msgstr "" + +#: ../stupid.c:126 +#, c-format +msgid "" +"%d: Which type of elemental do you want to summon?\n" +" (0:fire, 1:ice): " +msgstr "" + +#: ../stupid.c:141 +#, c-format +msgid "" +"%d: Which of %s's hands do you want to paralyze?\n" +" (0:left, 1:right): " +msgstr "" + +#: ../stupid.c:158 +#, c-format +msgid "" +"%d: Which of %s's hands do you want to charm?\n" +" (0:left, 1:right): " +msgstr "" + +#: ../stupid.c:184 +#, c-format +msgid "" +"%d: What gesture do you want %s's %s hand to make?\n" +" (enter a letter): " +msgstr "" + +#: ../stupid.c:191 +msgid " [Please enter a letter]: " +msgstr " [Por favor introduzca una letra]: " + +#: ../stupid.c:206 +#, c-format +msgid "Whom do you want %s to attack?" +msgstr "¿A quién quiere que %s ataque?" + +#: ../stupid.c:211 +#, c-format +msgid "Whom do you want %s's first attack to be at?" +msgstr "¿A quién quiere que %s ataque primero?" + +#: ../stupid.c:216 +#, c-format +msgid "Whom do you want %s's second attack to be at?" +msgstr "¿Quién quiere que %s ataque después?" + +#: ../stupid.c:221 +#, c-format +msgid "ERROR: Query about %d (%d)" +msgstr "ERROR: Pregunta sobre %d (%d)" + +#: ../stupid.c:224 ../stupid.c:313 +#, c-format +msgid "%d: %s\n" +msgstr "" + +#: ../stupid.c:245 ../stupid.c:350 +msgid "ERROR: No targets available!\n" +msgstr "ERROR: ¡No hay objetivos disponibles!\n" + +#: ../stupid.c:249 +#, c-format +msgid "%d: %s%s" +msgstr "" + +#: ../stupid.c:269 +#, c-format +msgid "%d: Which spell do you want to delay?\n" +msgstr "%d: ¿Qué hechizo quiere retardar?\n" + +#: ../stupid.c:272 +#, c-format +msgid "%d: Which spell do you want to make permanent?\n" +msgstr "%d: ¿Qué hechizo quiere hacer permanente?\n" + +#: ../stupid.c:278 +#, c-format +msgid "%s%d: %s" +msgstr "" + +#: ../stupid.c:301 +msgid "with your left hand" +msgstr "con su mano izquierda" + +#: ../stupid.c:303 +msgid "with your right hand" +msgstr "con su mano derecha" + +#: ../stupid.c:307 +msgid "from the Delayed Effect" +msgstr "del Efecto Retardado" + +#: ../stupid.c:309 +#, c-format +msgid "Who do you want to stab at (%s)?" +msgstr "¿A quién quiere acuchillar (%s)?" + +#: ../stupid.c:311 +#, c-format +msgid "Who do you want to cast %s at (%s)?" +msgstr "¿A quién quiere lanzar %s a (%s)?" + +#: ../stupid.c:373 +#, c-format +msgid "ERROR: Unknown query type %d!\n" +msgstr "" + +#: ../stupid.c:422 +#, c-format +msgid "%s (%d); " +msgstr "" + +#: ../stupid.c:440 +msgid "Arnold" +msgstr "Arnold" + +#: ../stupid.c:506 +msgid "(hasted) " +msgstr "(acelerado) " + +#: ../stupid.c:509 +msgid "(timestopped) " +msgstr "(tiempo parado) " + +#: ../stupid.c:520 +msgid ": Enter moves: " +msgstr ": Introduzca movimientos: " + +#: ../stupid.c:530 +msgid "+++ the game is a draw +++\n" +msgstr "+++ el juego es un empate +++\n" + +#: ../stupid.c:532 +#, c-format +msgid "+++ %s has won +++\n" +msgstr "+++ %s ha ganado +++\n" + +#: ../xbutton.c:43 +msgid "Spell List (left button: sorted by gesture)" +msgstr "Lista de hechizos (botón izquierdo: ordenado por gesto)" + +#: ../xbutton.c:45 +msgid "Spell List (middle button: alphabetical sort)" +msgstr "Lista de hechizos (botón de enmedio: ordenado alfabéticamente)" + +#: ../xbutton.c:47 +msgid "Spell List (right button: reversed sort by gesture)" +msgstr "Lista de hechizos (botón derecho: orden inverso por gesto)" + +#: ../xbutton.c:162 +msgid "please wait...." +msgstr "por favor espera...." + +#: ../xbutton.c:165 +msgid "End Move" +msgstr "Terminar movimiento" + +#: ../xbutton.c:167 +msgid "Move ENDED." +msgstr "Fin del movimiento." + +#: ../xbutton.c:171 +msgid "Quit" +msgstr "Quit" + +#: ../xbutton.c:173 +msgid "Wait...." +msgstr "Esperar...." + +#: ../xbutton.c:177 +msgid "End Answers" +msgstr "Terminar Respuestas" + +#: ../xbutton.c:179 +msgid "Answers ENDED." +msgstr "Respuestas TERMINADAS." + +#: ../xbutton.c:185 +msgid "Spell List" +msgstr "Lista de hechizos" + +#: ../xbutton.c:238 +msgid "ERROR: unknown button thing!\n" +msgstr "" + +#: ../xbutton.c:283 +msgid "" +msgstr "<¿respuesta?>" + +#: ../xgest.c:245 +msgid "What gesture do you want to" +msgstr "¿Qué gesto quiere" + +#: ../xgest.c:246 +#, c-format +msgid "make with your %s hand?" +msgstr "" + +#: ../xloop.c:359 +#, c-format +msgid "%d %s%s%s%s%s%s%s" +msgstr "" + +# ../main.c +msgid "White" +msgstr "Blanco" + +# ../main.c +msgid "Black" +msgstr "Negro" --- spellcast-1.0.orig/po/es.po.ADD +++ spellcast-1.0/po/es.po.ADD @@ -0,0 +1,3810 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2001-10-14 18:39-0600\n" +"PO-Revision-Date: 2002-01-12 18:22--600\n" +"Last-Translator: Matthias Lehner \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso8859-15\n" +"Content-Transfer-Encoding: 8bit\n" + +#: emonster.c:21 +msgid "kur" +msgstr "" + +#: emonster.c:21 +msgid "ak" +msgstr "" + +#: emonster.c:21 +msgid "ral" +msgstr "" + +#: emonster.c:21 +msgid "ki" +msgstr "" + +#: emonster.c:21 +msgid "rel" +msgstr "" + +#: emonster.c:21 +msgid "uk" +msgstr "" + +#: emonster.c:22 +msgid "kor" +msgstr "" + +#: emonster.c:22 +msgid "kul" +msgstr "" + +#: emonster.c:22 +msgid "kas" +msgstr "" + +#: emonster.c:22 +msgid "lok" +msgstr "" + +#: emonster.c:22 +msgid "luk" +msgstr "" + +#: emonster.c:22 +msgid "las" +msgstr "" + +#: emonster.c:22 +msgid "mak" +msgstr "" + +#: emonster.c:22 +msgid "mok" +msgstr "" + +#: emonster.c:22 +msgid "mas" +msgstr "" + +#: emonster.c:22 +msgid "mos" +msgstr "" + +#: emonster.c:22 +msgid "ga" +msgstr "" + +#: emonster.c:23 +#: emonster.c:61 +msgid "tha" +msgstr "" + +#: emonster.c:23 +msgid "gul" +msgstr "" + +#: emonster.c:23 +msgid "lug" +msgstr "" + +#: emonster.c:23 +msgid "mag" +msgstr "" + +#: emonster.c:23 +msgid "mog" +msgstr "" + +#: emonster.c:23 +msgid "ug" +msgstr "" + +#: emonster.c:39 +#: emonster.c:77 +#: xloop.c:320 +#: xloop.c:354 +msgid " " +msgstr "" + +#: emonster.c:59 +msgid "sni" +msgstr "" + +#: emonster.c:59 +msgid "sna" +msgstr "" + +#: emonster.c:59 +msgid "fer" +msgstr "" + +#: emonster.c:59 +msgid "fi" +msgstr "" + +#: emonster.c:59 +msgid "fir" +msgstr "" + +#: emonster.c:60 +msgid "por" +msgstr "" + +#: emonster.c:60 +msgid "per" +msgstr "" + +#: emonster.c:60 +msgid "snu" +msgstr "" + +#: emonster.c:60 +msgid "al" +msgstr "" + +#: emonster.c:60 +msgid "an" +msgstr "" + +#: emonster.c:60 +msgid "erl" +msgstr "" + +#: emonster.c:60 +msgid "lep" +msgstr "" + +#: emonster.c:60 +msgid "fru" +msgstr "" + +#: emonster.c:60 +msgid "fri" +msgstr "" + +#: emonster.c:60 +msgid "ig" +msgstr "" + +#: emonster.c:60 +msgid "eg" +msgstr "" + +#: emonster.c:61 +msgid "thi" +msgstr "" + +#: emonster.c:121 +msgid " the Goblin" +msgstr " el goblin" + +#: emonster.c:126 +msgid " the Ogre" +msgstr " el ogro" + +#: emonster.c:131 +msgid " the Troll" +msgstr " el troll" + +#: emonster.c:136 +msgid " the Giant" +msgstr " el gigante" + +#: emonster.c:142 +msgid " the Fiery" +msgstr " la fiera" + +#: emonster.c:148 +msgid " the Icy" +msgstr "el Helador" + +#: emonster.c:184 +msgid "" +"ERROR: wrong type of turn in execute_monsters()\n" +"" +msgstr "" +"ERROR: tipo ilegal de datos en turno de execute_monsters()\n" +"" + +#: emonster.c:197 +#, c-format +msgid "" +"%s suddenly looks confused.\n" +"" +msgstr "" +"%s de repente se ve confundido.\n" +"" + +#: emonster.c:204 +#, c-format +msgid "" +"%s is paralyzed and cannot attack.\n" +"" +msgstr "" +"%s es paralisado y no puede atacar.\n" +"" + +#: emonster.c:211 +#, c-format +msgid "" +"%s looks around blankly.\n" +"" +msgstr "" +"%s tiene la mirada perdida.\n" +"" + +#: emonster.c:355 +#, c-format +msgid "" +"%s refuses to attack %s.\n" +"" +msgstr "" +"%s se rehusa a atacar %s.\n" +"" + +#: emonster.c:364 +#, c-format +msgid "" +"%s tries to attack you, but cannot see you.\n" +"" +msgstr "" +"%s trata de atacarte, pero no te puede ver.\n" +"" + +#: emonster.c:365 +#, c-format +msgid "" +"%s tries to attack %s, but cannot see %s.\n" +"" +msgstr "" +"%s trata de atacar a %s, per no puede ver %s.\n" +"" + +#: emonster.c:375 +#, c-format +msgid "" +"The attack of %s is blocked by your Shield.\n" +"" +msgstr "" +"el ataque de %s es bloqueado por tu escudo.\n" +"" + +#: emonster.c:376 +#, c-format +msgid "" +"The attack of %s is blocked by %s's Shield.\n" +"" +msgstr "" +"el ataque a %s es bloqueado por el escudo de %s.\n" +"" + +#: emonster.c:387 +#, c-format +msgid "" +"%s reaches towards you, but you feel only a warm breeze.\n" +"" +msgstr "" +"%s de alcanza pero solamente sientes una brisa caliente.\n" +"" + +#: emonster.c:389 +#, c-format +msgid "" +"%s reaches toward %s, but cannot penetrate %s blue aura.\n" +"" +msgstr "" +"%s alcanza %s, pero no puede penetrar el aura azul de %s.\n" +"" + +#: emonster.c:397 +#, c-format +msgid "" +"%s hurls tongues of fire at you.\n" +"" +msgstr "%s lanza lenguas de fuego hacia tí" + +#: emonster.c:398 +#, c-format +msgid "" +"%s hurls fire at %s.\n" +"" +msgstr "" +"%s le lanza fuego a %s.\n" +"" + +#: emonster.c:408 +#, c-format +msgid "" +"%s reaches towards you, but you feel only a chill breeze.\n" +"" +msgstr "" + +#: emonster.c:410 +#, c-format +msgid "" +"%s reaches toward %s, but cannot penetrate %s pink aura.\n" +"" +msgstr "" + +#: emonster.c:418 +#, c-format +msgid "" +"%s hurls splinters of ice at you.\n" +"" +msgstr "" +"%s te tira astillas de hielo.\n" +"" + +#: emonster.c:419 +#, c-format +msgid "" +"%s hurls ice at %s.\n" +"" +msgstr "" +"%s tira hielo a %s.\n" +"" + +#: emonster.c:430 +#, c-format +msgid "" +"%s attacks %s!\n" +"" +msgstr "" +"%s attaca %s!\n" +"" + +#: emonster.c:435 +#, c-format +msgid "" +"%s attacks you.\n" +"" +msgstr "" +"%s te attaca.\n" +"" + +#: emonster.c:436 +#, c-format +msgid "" +"%s attacks %s.\n" +"" +msgstr "" +"%s attaca %s.\n" +"" + +#: engine.c:118 +msgid "digit" +msgstr "dedo" + +#: engine.c:121 +msgid "fingers" +msgstr "dedos" + +#: engine.c:124 +msgid "palm" +msgstr "palma" + +#: engine.c:127 +msgid "wave" +msgstr "agitar" + +#: engine.c:130 +msgid "clap" +msgstr "palmear" + +#: engine.c:133 +msgid "snap" +msgstr "casqillo" + +#: engine.c:136 +#: espells.c:67 +msgid "stab" +msgstr "apuñalar" + +#: engine.c:139 +msgid "nothing" +msgstr "nada" + +#: engine.c:142 +msgid "ERROR:UNKNOWN" +msgstr "ERROR:DESCONOCIDO" + +#: engine.c:209 +msgid "" +"Too many players requested.\n" +"" +msgstr "" +"demasiados jugadores solicitados.\n" +"" + +#: engine.c:234 +#, c-format +msgid "" +"%s strides defiantly into the arena. The referee casts the formal Dispel Magic and Anti-Spell on %s....\n" +"" +msgstr "" +"%s entre desafiantemente en la arena. El árbitro murmura el hechizo formal de mágia y contrahechizo hacia %s....\n" +"" + +#: engine.c:235 +msgid "" +"You advance confidently into the arena. The referee casts the formal Dispel Magic and Anti-Spell on you....\n" +"" +msgstr "" +"Tu avancias confidentemente en la arena. El árbitro murmura el hechizo formal de mágia y contrahechizo hacia ti....\n" +"" + +#: engine.c:260 +#, c-format +msgid "" +"%s\n" +"" +msgstr "" +"%s\n" +"" + +#: engine.c:311 +#, c-format +msgid "" +"In a fit of absent-mindedness, %s repeats %s gestures from last turn: %s with the left hand, %s with the right.\n" +"" +msgstr "" +"En un momento de ausencia mental, %s repite %s gestos del ultimo turno: %s con la mano izquierda, %s con la mano derecha.\n" +"" + +#: engine.c:326 +#, c-format +msgid "" +"%s accidentally makes a %s with %s %s hand.\n" +"" +msgstr "" +"%s accidentalmente hace un %s con %s %s mano.\n" +"" + +#: engine.c:326 +#: engine.c:355 +#: engine.c:414 +#: execute2.c:88 +#: execute2.c:89 +#: execute2.c:152 +#: execute2.c:153 +#: execute2.c:213 +#: execute2.c:214 +#: stupid.c:187 +#: xgest.c:213 +#: xquery.c:362 +msgid "right" +msgstr "derecha" + +#: engine.c:326 +#: engine.c:355 +#: engine.c:414 +#: execute2.c:88 +#: execute2.c:89 +#: execute2.c:152 +#: execute2.c:153 +#: execute2.c:213 +#: execute2.c:214 +#: stupid.c:187 +#: xgest.c:213 +#: xquery.c:362 +msgid "left" +msgstr "izquierda" + +#: engine.c:355 +#, c-format +msgid "" +"%s mysteriously makes a %s with %s %s hand.\n" +"" +msgstr "" +"%s misteriosamente hace un %s con %s %s mano.\n" +"" + +#: engine.c:372 +#, c-format +msgid "" +"Terrified, %s does nothing with %s left hand.\n" +"" +msgstr "" +"Atterorizado, %s no hace nada con %s la mano izquierda.\n" +"" + +#: engine.c:375 +#, c-format +msgid "" +"Terrified, %s does nothing with %s right hand.\n" +"" +msgstr "" +"Atterorizado, %s no hace nada con %s la mano derecha.\n" +"" + +#: engine.c:378 +#, c-format +msgid "" +"Terrified, %s does nothing with either hand.\n" +"" +msgstr "" + +#: engine.c:381 +#, c-format +msgid "" +"%s is terrified, but manages %s gestures anyway.\n" +"" +msgstr "" +"%s está atterorizado pero manega %s los gestos de todos modos.\n" +"" + +#: engine.c:408 +msgid "" +"ERROR: paralysis previous_gesture returned bad value.\n" +"" +msgstr "" +"ERROR: paralysis gestión_previa retorno mal valor.\n" +"" + +#: engine.c:414 +#, c-format +msgid "" +"%s's %s hand is frozen in a %s.\n" +"" +msgstr "" +"%s's %s la mano está conjelada en un %s.\n" +"" + +#: engine.c:429 +msgid "" +"You cannot stab with both hands!\n" +"" +msgstr "" +"Tu no puedes apuñalar com ambas manos!\n" +"" + +#: engine.c:448 +#, c-format +msgid "" +"%s makes the gesture of surrender!\n" +"" +msgstr "" +"%s hace el gesto de rendimiento!\n" +"" + +#: engine.c:449 +msgid "" +"Oh, dear. You seem to have surrendered.\n" +"" +msgstr "" +"Oh guerido, parece que te rendiste.\n" +"" + +#: engine.c:509 +#: engine.c:523 +#, c-format +msgid "" +"%s accelerates into a flickering blur.\n" +"" +msgstr "" + +#: engine.c:510 +msgid "" +"Everything around you stops dead. The world is silent and motionless.\n" +"" +msgstr "" +"Todo a tu alrededor está muerto. El mundo está silencioso y inmovil.\n" +"" + +#: engine.c:513 +#: engine.c:527 +#, c-format +msgid "" +"%s reappears, moving at normal speed.\n" +"" +msgstr "" +"%s reaparece, moviendose a una velocidad normal.\n" +"" + +#: engine.c:514 +msgid "" +"Everything begins moving again.\n" +"" +msgstr "" +"Todo empieza a moverze otra vez.\n" +"" + +#: engine.c:544 +#: engine.c:564 +#, c-format +msgid "" +"%s begins moving very quickly.\n" +"" +msgstr "" +"%s empieza a moverse muy rapidamente.\n" +"" + +#: engine.c:545 +msgid "" +"Everyone else begins moving very slowly.\n" +"" +msgstr "" +"Todos los otros empiezan a moverse muy lentamente.\n" +"" + +#: engine.c:549 +#: engine.c:569 +#, c-format +msgid "" +"%s is still moving quickly.\n" +"" +msgstr "" +"%s aun se mueve rapidamente.\n" +"" + +#: engine.c:550 +msgid "" +"Everyone else is still moving slowly.\n" +"" +msgstr "" +"Todos los otros aun se mueven lentamente.\n" +"" + +#: engine.c:553 +#: engine.c:573 +#: execute2.c:515 +#, c-format +msgid "" +"%s slows down to normal speed.\n" +"" +msgstr "" +"%s baja a la velocidad normal.\n" +"" + +#: engine.c:554 +#: execute2.c:517 +msgid "" +"Everyone comes back up to normal speed.\n" +"" +msgstr "" +"Todos vuelven a la velocidad normal.\n" +"" + +#: engine.c:730 +msgid "ERROR:NOBODY-wiz" +msgstr "ERROR:NADIE-wiz" + +#: engine.c:735 +msgid "ERROR:NOBODY-cre" +msgstr "ERROR:NADIE-cre" + +#: engine.c:740 +msgid "ERROR:NOBODY-corpse" +msgstr "ERROR:NINGUN-cuerpo" + +#: engine.c:742 +msgid "ERROR:NOBODY-atall" +msgstr "ERROR:NADIE-atall" + +#: engine.c:947 +msgid "" +"ERROR: Unknown turn type\n" +"" +msgstr "" +"ERROR: Type de movida desconocida\n" +"" + +#: engine.c:996 +msgid "" +"ERROR in restrict_gestures\n" +"" +msgstr "" +"ERROR en gestión_restringida\n" +"" + +#: engine.c:1169 +msgid "" +"ERROR: Unable to find Delayed spell.\n" +"" +msgstr "" +"ERROR: Imposible hallar hechizo dilatado.\n" +"" + +#: engine.c:1174 +#, c-format +msgid "" +"You cast %s; the spell is caught in the web of your Delayed Effect. It rises to hover by your head.\n" +"" +msgstr "" + +#: engine.c:1175 +#, c-format +msgid "" +"%s casts %s; the spell is caught in the web of %s Delayed Effect.\n" +"" +msgstr "" + +#: engine.c:1178 +#, c-format +msgid "" +"The %s spell that you had caught previously is lost.\n" +"" +msgstr "" + +#: engine.c:1179 +#, c-format +msgid "" +"The %s spell that %s had caught previously is lost.\n" +"" +msgstr "" + +#: engine.c:1220 +#, c-format +msgid "" +"Your Permanency spell wraps itself around your %s spell.\n" +"" +msgstr "" + +#: engine.c:1280 +#, c-format +msgid "" +"%s starts to look hot and flushed.\n" +"" +msgstr "" + +#: engine.c:1282 +msgid "" +"You begin to feel somewhat feverish.\n" +"" +msgstr "" + +#: engine.c:1287 +#, c-format +msgid "" +"%s looks even more flushed.\n" +"" +msgstr "" + +#: engine.c:1289 +msgid "" +"Your fever is growing worse.\n" +"" +msgstr "" + +#: engine.c:1294 +#, c-format +msgid "" +"%s is flushed and sweating, and seems to be somewhat unsteady on %s feet.\n" +"" +msgstr "" + +#: engine.c:1296 +msgid "" +"You are very hot and somewhat dizzy, and your bones are starting to ache.\n" +"" +msgstr "" + +#: engine.c:1301 +#, c-format +msgid "" +"%s is both flushed and shivering violently.\n" +"" +msgstr "" + +#: engine.c:1303 +msgid "" +"You are feverish and shivering at the same time, and you ache all over.\n" +"" +msgstr "" + +#: engine.c:1308 +#, c-format +msgid "" +"%s crumples to the ground, agony on %s sweating features.\n" +"" +msgstr "" + +#: engine.c:1310 +msgid "" +"Your knees give way and you fall to the ground. Your head pounds unmercifully as consciousness slips away....\n" +"" +msgstr "" + +#: engine.c:1325 +#, c-format +msgid "" +"%s is looking pale.\n" +"" +msgstr "" +"%s se mira pálido.\n" +"" + +#: engine.c:1327 +msgid "" +"Your toes suddenly feel slightly numb.\n" +"" +msgstr "" + +#: engine.c:1332 +#, c-format +msgid "" +"%s is looking very pale and weak.\n" +"" +msgstr "" + +#: engine.c:1334 +msgid "" +"Your hands and feet are getting numb.\n" +"" +msgstr "" + +#: engine.c:1339 +#, c-format +msgid "" +"%s is white as a sheet, and seems a little unsteady.\n" +"" +msgstr "" + +#: engine.c:1341 +msgid "" +"Your limbs are heavy, and your fingers are getting clumsy.\n" +"" +msgstr "" + +#: engine.c:1346 +#, c-format +msgid "" +"%s is having difficulty staying on %s feet.\n" +"" +msgstr "" + +#: engine.c:1348 +msgid "" +"You cannot feel your hands and feet, and your vision is becoming clouded.\n" +"" +msgstr "" + +#: engine.c:1353 +#, c-format +msgid "" +"%s collapses in a heap, twitching slightly.\n" +"" +msgstr "" + +#: engine.c:1355 +msgid "" +"You stumble and fall to your knees, vision dimming. Numbness creeps through your bones, and you cannot tell if you are still breathing....\n" +"" +msgstr "" + +#: engine.c:1372 +#, c-format +msgid "" +"%s has died!\n" +"" +msgstr "" +"%s se ha muerto!\n" +"" + +#: engine.c:1373 +msgid "" +"You have died!\n" +"" +msgstr "" +"Te has muerto!\n" +"" + +#: engine.c:1386 +#, c-format +msgid "" +"The Delayed Effect spell hovering around %s dies away.\n" +"" +msgstr "" + +#: engine.c:1387 +msgid "" +"The Delayed Effect spell hovering around you dies away.\n" +"" +msgstr "" + +#: engine.c:1395 +#, c-format +msgid "" +"The Permanency spell hovering around %s dies away.\n" +"" +msgstr "" + +#: engine.c:1396 +msgid "" +"The Permanency spell hovering around you dies away.\n" +"" +msgstr "" + +#: engine.c:1403 +#, c-format +msgid "" +"%s has died.\n" +"" +msgstr "" +"%s has muerto.\n" +"" + +#: engine.c:1427 +#, c-format +msgid "" +"%s is the sole survivor!\n" +"" +msgstr "" +"%s es el único sobreviviente!\n" +"" + +#: engine.c:1434 +#, c-format +msgid "" +"%s has surrendered to %s!\n" +"" +msgstr "" + +#: engine.c:1438 +#, c-format +msgid "" +"All of %s's opponents have surrendered!\n" +"" +msgstr "" + +#: engine.c:1447 +msgid "" +"Everyone is dead!\n" +"" +msgstr "" +"Todos están muertos!\n" +"" + +#: engine.c:1455 +#, c-format +msgid "" +"%s finds that there is nobody left to surrender to!\n" +"" +msgstr "" + +#: engine.c:1461 +msgid "" +"The survivors have all surrendered to each other!\n" +"" +msgstr "" + +#: engine.c:1463 +msgid "" +"Everyone has surrendered to each other!\n" +"" +msgstr "" + +#: espells.c:25 +msgid "Dispel Magic" +msgstr "" + +#: espells.c:26 +msgid "Summon Elemental" +msgstr "enviar elemento" + +#: espells.c:27 +msgid "Magic Mirror" +msgstr "espejo mágico" + +#: espells.c:28 +#: espells.c:58 +msgid "Lightning Bolt" +msgstr "relámpago" + +#: espells.c:29 +msgid "Cure Heavy Wounds" +msgstr "curar heridas graves" + +#: espells.c:30 +msgid "Cure Light Wounds" +msgstr "curar heridas leves" + +#: espells.c:31 +msgid "Amnesia" +msgstr "amnesia" + +#: espells.c:32 +msgid "Confusion" +msgstr "confusión" + +#: espells.c:33 +msgid "Disease" +msgstr "enfermedad" + +#: espells.c:34 +msgid "Blindness" +msgstr "ceguera" + +#: espells.c:35 +msgid "Delayed Effect" +msgstr "efecto retardo" + +#: espells.c:36 +msgid "Raise Dead" +msgstr "revivir" + +#: espells.c:37 +msgid "Poison" +msgstr "veneno" + +#: espells.c:38 +msgid "Paralysis" +msgstr "parálisis" + +#: espells.c:39 +msgid "Summon Troll" +msgstr "enviar troll" + +#: espells.c:40 +msgid "Fireball" +msgstr "bola de fuego" + +#: espells.c:41 +msgid "Shield" +msgstr "escudo" + +#: espells.c:42 +msgid "SURRENDER" +msgstr "RENDIRSE" + +#: espells.c:43 +msgid "Remove Enchantment" +msgstr "levantar hechizo" + +#: espells.c:44 +msgid "Invisibility" +msgstr "invisibilidad" + +#: espells.c:45 +msgid "Charm Monster" +msgstr "embrujar monstruo" + +#: espells.c:46 +msgid "Charm Person" +msgstr "embrujar persona" + +#: espells.c:47 +msgid "Summon Ogre" +msgstr "enviar ogro" + +#: espells.c:48 +msgid "Finger of Death" +msgstr "dedo de la muerte" + +#: espells.c:49 +msgid "Haste" +msgstr "agilidad" + +#: espells.c:50 +msgid "Missile" +msgstr "misíl" + +#: espells.c:51 +msgid "Summon Goblin" +msgstr "enviar goblin" + +#: espells.c:52 +msgid "Anti-Spell" +msgstr "ante-hechizo" + +#: espells.c:53 +msgid "Permanency" +msgstr "permanente" + +#: espells.c:54 +msgid "Time Stop" +msgstr "detener tiempo" + +#: espells.c:55 +msgid "Resist Cold" +msgstr "resistir frío" + +#: espells.c:56 +msgid "Fear" +msgstr "miedo" + +#: espells.c:57 +msgid "Fire Storm" +msgstr "tormenta de fuego" + +#: espells.c:59 +msgid "Cause Light Wounds" +msgstr "causar heridas leves" + +#: espells.c:60 +msgid "Summon Giant" +msgstr "enviar gigante" + +#: espells.c:61 +msgid "Cause Heavy Wounds" +msgstr "causar heridas graves" + +#: espells.c:62 +#: espells.c:66 +msgid "Counter-Spell" +msgstr "contra-hechizo" + +#: espells.c:63 +msgid "Ice Storm" +msgstr "tormenta de hielo" + +#: espells.c:64 +msgid "Resist Heat" +msgstr "resistir calor" + +#: espells.c:65 +msgid "Protection From Evil" +msgstr "protección del mal" + +#: etran.c:22 +msgid "" +"Spellcast Game Transcript\n" +"\n" +"" +msgstr "" + +#: etran.c:87 +msgid " (Time Stop)" +msgstr "" + +#: etran.c:90 +msgid " (Haste)" +msgstr "" + +#: etran.c:97 +#, c-format +msgid "" +"\n" +"\tTurn %d%s:\n" +"" +msgstr "" + +#: etran.c:105 +#, c-format +msgid "" +"%s (%d): %c %c\n" +"" +msgstr "" + +#: etran.c:110 +#, c-format +msgid "" +"%s (%d): [no gestures]\n" +"" +msgstr "" + +#: etran.c:119 +#, c-format +msgid "" +"%s (%d)\n" +"" +msgstr "" + +#: etran.c:123 +#: main.c:185 +#: stupid.c:417 +#: stupid.c:430 +msgid "" +"\n" +"" +msgstr "" + +#: execute2.c:29 +#, c-format +msgid "" +"The Amnesia spell curls around %s's mind.\n" +"" +msgstr "" + +#: execute2.c:31 +msgid "" +"The Amnesia spell curls around your mind.\n" +"" +msgstr "" + +#: execute2.c:44 +#, c-format +msgid "" +"The Confusion spell curls around %s's mind.\n" +"" +msgstr "" + +#: execute2.c:46 +msgid "" +"The Confusion spell curls around your mind.\n" +"" +msgstr "" + +#: execute2.c:56 +#, c-format +msgid "" +"The Fear spell curls around %s's mind.\n" +"" +msgstr "" + +#: execute2.c:58 +msgid "" +"The Fear spell curls around your mind.\n" +"" +msgstr "" + +#: execute2.c:67 +#, c-format +msgid "" +"Not knowing which of %s's hands to strike, the Paralysis spell fizzles.\n" +"" +msgstr "" + +#: execute2.c:68 +msgid "" +"Not knowing which of your hands to strike, the Paralysis spell fizzles.\n" +"" +msgstr "" + +#: execute2.c:88 +#, c-format +msgid "" +"The Paralysis spell curls around your %s hand.\n" +"" +msgstr "" + +#: execute2.c:89 +#, c-format +msgid "" +"The Paralysis spell curls around %s's %s hand.\n" +"" +msgstr "" + +#: execute2.c:99 +#, c-format +msgid "" +"The Paralysis spell curls around %s's mind.\n" +"" +msgstr "" + +#: execute2.c:107 +#, c-format +msgid "" +"The Charm Monster spell swirls around %s's mind, but cannot sink in.\n" +"" +msgstr "" + +#: execute2.c:108 +msgid "" +"The Charm Monster spell swirls around your mind, but cannot sink in.\n" +"" +msgstr "" + +#: execute2.c:113 +#, c-format +msgid "" +"The Charm Monster spell strikes %s, and then seems to freeze. Referees stomp into the arena and glare at the spell. Then they glare at each other. Then they glare at the spell again. They huddle together, muttering and glowering. Eventually they pick the spell up bodily and carry it off the field.\n" +"" +msgstr "" + +#: execute2.c:124 +#, c-format +msgid "" +"The Charm Monster spell curls around %s, and %s smiles dopily at %s.\n" +"" +msgstr "" + +#: execute2.c:134 +#, c-format +msgid "" +"Not knowing which of %s's hands to strike, the Charm Person spell fizzles.\n" +"" +msgstr "" + +#: execute2.c:135 +msgid "" +"Not knowing which of your hands to strike, the Charm Person spell fizzles.\n" +"" +msgstr "" + +#: execute2.c:152 +#, c-format +msgid "" +"The Charm Person spell curls around your %s hand.\n" +"" +msgstr "" + +#: execute2.c:153 +#, c-format +msgid "" +"The Charm Person spell curls around %s's %s hand.\n" +"" +msgstr "" + +#: execute2.c:159 +#, c-format +msgid "" +"The Charm Person spell swirls around %s's mind, but cannot sink in.\n" +"" +msgstr "" + +#: execute2.c:169 +#, c-format +msgid "" +"%s is still afflicted with Amnesia.\n" +"" +msgstr "" + +#: execute2.c:171 +msgid "" +"You are still afflicted with Amnesia.\n" +"" +msgstr "" + +#: execute2.c:177 +#, c-format +msgid "" +"%s is still afflicted with Fear.\n" +"" +msgstr "" + +#: execute2.c:179 +msgid "" +"You are still afflicted with Fear.\n" +"" +msgstr "" + +#: execute2.c:188 +#, c-format +msgid "" +"%s is still enamoured of %s.\n" +"" +msgstr "" + +#: execute2.c:195 +#, c-format +msgid "" +"%s is still afflicted with Confusion.\n" +"" +msgstr "" + +#: execute2.c:197 +msgid "" +"You are still afflicted with Confusion.\n" +"" +msgstr "" + +#: execute2.c:205 +#, c-format +msgid "" +"%s is still Charmed.\n" +"" +msgstr "" + +#: execute2.c:206 +msgid "" +"You are still Charmed.\n" +"" +msgstr "" + +#: execute2.c:213 +#, c-format +msgid "" +"%s's %s hand is still Paralyzed.\n" +"" +msgstr "" + +#: execute2.c:214 +#, c-format +msgid "" +"Your %s hand is still Paralyzed.\n" +"" +msgstr "" + +#: execute2.c:218 +#, c-format +msgid "" +"%s is still afflicted with Paralysis.\n" +"" +msgstr "" + +#: execute2.c:226 +#, c-format +msgid "" +"ERROR: unknown perm->mind_spell %d\n" +"" +msgstr "" + +#: execute2.c:235 +#, c-format +msgid "" +"%s sneezes loudly.\n" +"" +msgstr "" + +#: execute2.c:237 +msgid "" +"You sneeze loudly.\n" +"" +msgstr "" + +#: execute2.c:247 +#, c-format +msgid "" +"%s suddenly looks somewhat pale.\n" +"" +msgstr "" + +#: execute2.c:249 +msgid "" +"A flash of pain lances along your bones, and then fades away.\n" +"" +msgstr "" + +#: execute2.c:258 +#, c-format +msgid "" +"The Anti-Spell fizzes away into nothing as it approaches %s.\n" +"" +msgstr "" + +#: execute2.c:260 +msgid "" +"The Anti-Spell fizzes away into nothing as it approaches you.\n" +"" +msgstr "" + +#: execute2.c:266 +#, c-format +msgid "" +"The Anti-Spell whizzes through %s without any effect.\n" +"" +msgstr "" + +#: execute2.c:271 +#, c-format +msgid "" +"The Anti-Spell jolts %s, causing the magical energies around %s hands to flicker.\n" +"" +msgstr "" + +#: execute2.c:272 +msgid "" +"The Anti-Spell jolts you, interrupting the flow of magical energy in your hands.\n" +"" +msgstr "" + +#: execute2.c:282 +#, c-format +msgid "" +"The Delayed Effect fizzes away into nothing as it approaches %s.\n" +"" +msgstr "" + +#: execute2.c:284 +msgid "" +"The Delayed Effect fizzes away into nothing as it approaches you.\n" +"" +msgstr "" + +#: execute2.c:290 +#, c-format +msgid "" +"The Delayed Effect whizzes through %s without any effect.\n" +"" +msgstr "" + +#: execute2.c:295 +#, c-format +msgid "" +"The Delayed Effect spreads out around %s.\n" +"" +msgstr "" + +#: execute2.c:296 +msgid "" +"The Delayed Effect spreads out in a cloud around you, waiting for you to complete a spell.\n" +"" +msgstr "" + +#: execute2.c:305 +#, c-format +msgid "" +"The Permanency fizzes away into nothing as it approaches %s.\n" +"" +msgstr "" + +#: execute2.c:307 +msgid "" +"The Permanency fizzes away into nothing as it approaches you.\n" +"" +msgstr "" + +#: execute2.c:313 +#, c-format +msgid "" +"The Permanency whizzes through %s without any effect.\n" +"" +msgstr "" + +#: execute2.c:318 +#, c-format +msgid "" +"The Permanency spreads out around %s.\n" +"" +msgstr "" + +#: execute2.c:319 +msgid "" +"The Permanency spreads out in a cloud around you, waiting for you to complete a spell.\n" +"" +msgstr "" + +#: execute2.c:328 +#, c-format +msgid "" +"%s blinks, then stumbles slightly as %s eyes turn milky.\n" +"" +msgstr "" + +#: execute2.c:330 +msgid "" +"A haze suddenly appears before your eyes. The world dims rapidly, and you are shortly enveloped in total darkness.\n" +"" +msgstr "" + +#: execute2.c:336 +#, c-format +msgid "" +"%s is still blind.\n" +"" +msgstr "" + +#: execute2.c:338 +msgid "" +"You are still blind.\n" +"" +msgstr "" + +#: execute2.c:348 +#, c-format +msgid "" +"The milky cast fades from %s's eyes.\n" +"" +msgstr "" + +#: execute2.c:350 +msgid "" +"The dark veil falls away from your eyes.\n" +"" +msgstr "" + +#: execute2.c:359 +#, c-format +msgid "" +"%s turns quietly translucent, and fades from view.\n" +"" +msgstr "" + +#: execute2.c:361 +msgid "" +"The world becomes strangely misted in front of your eyes. Looking down, you see that your hands are no longer visible.\n" +"" +msgstr "" + +#: execute2.c:367 +#, c-format +msgid "" +"%s is still invisible.\n" +"" +msgstr "" + +#: execute2.c:369 +msgid "" +"You are still invisible.\n" +"" +msgstr "" + +#: execute2.c:379 +#, c-format +msgid "" +"A %s-shaped shadow appears, and %s rapidly becomes fully visible.\n" +"" +msgstr "" + +#: execute2.c:381 +msgid "" +"Your limbs have become visible again.\n" +"" +msgstr "" + +#: execute2.c:406 +#, c-format +msgid "" +"The Remove Enchantment whirls its dissipative energies around %s.\n" +"" +msgstr "" + +#: execute2.c:408 +msgid "" +"The Remove Enchantment whirls its dissipative energies around you.\n" +"" +msgstr "" + +#: execute2.c:414 +#, c-format +msgid "" +"You are freed of the %s.\n" +"" +msgstr "" + +#: execute2.c:415 +#: execute2.c:425 +#, c-format +msgid "" +"%s is freed of the %s.\n" +"" +msgstr "" + +#: execute2.c:432 +msgid "" +"Your blue aura of Resist Heat fades away.\n" +"" +msgstr "" + +#: execute2.c:433 +#, c-format +msgid "" +"%s's blue aura of Resist Heat fades away.\n" +"" +msgstr "" + +#: execute2.c:443 +msgid "" +"Your pink aura of Resist Cold fades away.\n" +"" +msgstr "" + +#: execute2.c:444 +#, c-format +msgid "" +"%s's pink aura of Resist Cold fades away.\n" +"" +msgstr "" + +#: execute2.c:454 +#: execute2.c:874 +#, c-format +msgid "" +"%s seems to have stopped shivering, and %s skin is no longer flushed and damp.\n" +"" +msgstr "" + +#: execute2.c:456 +#: execute2.c:876 +msgid "" +"Your fever suddenly abates. You feel much better.\n" +"" +msgstr "" + +#: execute2.c:463 +#, c-format +msgid "" +"%s's color improves dramatically.\n" +"" +msgstr "" + +#: execute2.c:465 +msgid "" +"The numbness and heaviness falls from your limbs. You feel much better.\n" +"" +msgstr "" + +#: execute2.c:473 +#, c-format +msgid "" +"The Delayed Effect spell hovering around %s disintegrates.\n" +"" +msgstr "" + +#: execute2.c:475 +msgid "" +"The Delayed Effect spell hovering around you disintegrates.\n" +"" +msgstr "" + +#: execute2.c:482 +#, c-format +msgid "" +"The %s spell that you had caught in a Delayed Effect is lost.\n" +"" +msgstr "" + +#: execute2.c:483 +#, c-format +msgid "" +"The %s spell that %s had caught in a Delayed Effect is lost.\n" +"" +msgstr "" + +#: execute2.c:491 +#, c-format +msgid "" +"The Permanency spell hovering around %s disintegrates.\n" +"" +msgstr "" + +#: execute2.c:493 +msgid "" +"The Permanency spell hovering around you disintegrates.\n" +"" +msgstr "" + +#: execute2.c:501 +#, c-format +msgid "" +"%s's circle of Protection flickers out.\n" +"" +msgstr "" + +#: execute2.c:503 +msgid "" +"Your circle of Protection flickers out.\n" +"" +msgstr "" + +#: execute2.c:522 +#, c-format +msgid "" +"The Haste on %s is nulled.\n" +"" +msgstr "" + +#: execute2.c:524 +msgid "" +"The Haste on you is nulled.\n" +"" +msgstr "" + +#: execute2.c:532 +#, c-format +msgid "" +"The Time Stop on %s is nulled.\n" +"" +msgstr "" + +#: execute2.c:534 +msgid "" +"The Time Stop on you is nulled.\n" +"" +msgstr "" + +#: execute2.c:541 +#, c-format +msgid "" +"%s becomes visible again, rather suddenly.\n" +"" +msgstr "" + +#: execute2.c:543 +msgid "" +"Your body tingles and becomes visible again.\n" +"" +msgstr "" + +#: execute2.c:550 +#, c-format +msgid "" +"%s's eyes abruptly clear.\n" +"" +msgstr "" + +#: execute2.c:552 +msgid "" +"Sight bursts in upon you again.\n" +"" +msgstr "" + +#: execute2.c:576 +#, c-format +msgid "" +"The knife slides off of %s's Shield.\n" +"" +msgstr "" + +#: execute2.c:578 +msgid "" +"The knife slides off of your Shield.\n" +"" +msgstr "" + +#: execute2.c:583 +#, c-format +msgid "" +"The knives slide off of %s's Shield.\n" +"" +msgstr "" + +#: execute2.c:585 +msgid "" +"The knives slide off of your Shield.\n" +"" +msgstr "" + +#: execute2.c:593 +#, c-format +msgid "" +"The knife strikes %s.\n" +"" +msgstr "" + +#: execute2.c:595 +msgid "" +"The knife strikes you.\n" +"" +msgstr "" + +#: execute2.c:600 +#, c-format +msgid "" +"The %s knives strike you.\n" +"" +msgstr "" + +#: execute2.c:601 +#, c-format +msgid "" +"The %s knives strike %s.\n" +"" +msgstr "" + +#: execute2.c:615 +#, c-format +msgid "" +"The Missile shatters on %s's Shield.\n" +"" +msgstr "" + +#: execute2.c:617 +msgid "" +"The Missile shatters on your Shield.\n" +"" +msgstr "" + +#: execute2.c:622 +#, c-format +msgid "" +"The Missiles shatter on %s's Shield.\n" +"" +msgstr "" + +#: execute2.c:624 +msgid "" +"The Missiles shatter on your Shield.\n" +"" +msgstr "" + +#: execute2.c:632 +#, c-format +msgid "" +"The Missile strikes %s.\n" +"" +msgstr "" + +#: execute2.c:634 +msgid "" +"The Missile strikes you.\n" +"" +msgstr "" + +#: execute2.c:639 +#, c-format +msgid "" +"The %s Missiles strike you.\n" +"" +msgstr "" + +#: execute2.c:640 +#, c-format +msgid "" +"The %s Missiles strike %s.\n" +"" +msgstr "" + +#: execute2.c:653 +#, c-format +msgid "" +"The Cause Light Wounds spell tears into %s.\n" +"" +msgstr "" + +#: execute2.c:655 +msgid "" +"The Cause Light Wounds spell tears into you.\n" +"" +msgstr "" + +#: execute2.c:660 +#, c-format +msgid "" +"The %s Cause Light Wounds spells tear into you.\n" +"" +msgstr "" + +#: execute2.c:661 +#, c-format +msgid "" +"The %s Cause Light Wounds spells tear into %s.\n" +"" +msgstr "" + +#: execute2.c:673 +#, c-format +msgid "" +"The Cause Heavy Wounds spell tears into %s.\n" +"" +msgstr "" + +#: execute2.c:675 +msgid "" +"The Cause Heavy Wounds spell tears painfully into you.\n" +"" +msgstr "" + +#: execute2.c:680 +#, c-format +msgid "" +"The %s Cause Heavy Wounds spells tear painfully into you.\n" +"" +msgstr "" + +#: execute2.c:681 +#, c-format +msgid "" +"The %s Cause Heavy Wounds spells tear into %s.\n" +"" +msgstr "" + +#: execute2.c:693 +#, c-format +msgid "" +"The Lightning Bolt staggers %s.\n" +"" +msgstr "" + +#: execute2.c:695 +msgid "" +"The Lightning Bolt strikes you, staggering and nearly deafening you.\n" +"" +msgstr "" + +#: execute2.c:700 +#, c-format +msgid "" +"The %s Lightning Bolts crash into you; the concussions nearly knock you off your feet.\n" +"" +msgstr "" + +#: execute2.c:701 +#, c-format +msgid "" +"The %s Lightning Bolts strike %s, staggering %s.\n" +"" +msgstr "" + +#: execute2.c:714 +#, c-format +msgid "" +"The Fireball strikes %s, but the flames slide off %s Resist Heat aura.\n" +"" +msgstr "" + +#: execute2.c:716 +msgid "" +"The Fireball strikes you, but you feel only a slight warmth.\n" +"" +msgstr "" + +#: execute2.c:721 +#, c-format +msgid "" +"The Fireballs strike %s, but the flames slide off %s Resist Heat aura.\n" +"" +msgstr "" + +#: execute2.c:723 +msgid "" +"The Fireballs strike you, but you feel only a slight warmth.\n" +"" +msgstr "" + +#: execute2.c:731 +#, c-format +msgid "" +"The Fireball strikes %s.\n" +"" +msgstr "" + +#: execute2.c:733 +msgid "" +"The Fireball strikes you with a roar of flame.\n" +"" +msgstr "" + +#: execute2.c:738 +#, c-format +msgid "" +"The %s Fireballs blast into you, surrounding you with blinding flame.\n" +"" +msgstr "" + +#: execute2.c:739 +#, c-format +msgid "" +"The %s Fireballs strike %s.\n" +"" +msgstr "" + +#: execute2.c:752 +#, c-format +msgid "" +"The Counter-Spell around %s cancels the Fire Storm near %s.\n" +"" +msgstr "" + +#: execute2.c:754 +msgid "" +"The Counter-Spell cancels the Fire Storm in your vicinity.\n" +"" +msgstr "" + +#: execute2.c:760 +#, c-format +msgid "" +"The Fire Storm washes over %s, who remains unharmed inside %s blue aura.\n" +"" +msgstr "" + +#: execute2.c:762 +msgid "" +"The Fire Storm washes over you, but you feel only a gentle warmth.\n" +"" +msgstr "" + +#: execute2.c:768 +#, c-format +msgid "" +"The Fire Storm washes over %s.\n" +"" +msgstr "" + +#: execute2.c:770 +msgid "" +"The Fire Storm washes over you.\n" +"" +msgstr "" + +#: execute2.c:780 +#, c-format +msgid "" +"The Counter-Spell around %s cancels the Ice Storm near %s.\n" +"" +msgstr "" + +#: execute2.c:782 +msgid "" +"The Counter-Spell cancels the Ice Storm in your vicinity.\n" +"" +msgstr "" + +#: execute2.c:791 +#, c-format +msgid "" +"The Ice Storm washes over %s, who remains unharmed inside %s pink aura.\n" +"" +msgstr "" + +#: execute2.c:793 +msgid "" +"The Ice Storm washes over you, but you feel only a gentle coolness.\n" +"" +msgstr "" + +#: execute2.c:799 +#, c-format +msgid "" +"The Ice Storm lashes at %s.\n" +"" +msgstr "" + +#: execute2.c:801 +msgid "" +"The Ice Storm lashes at you.\n" +"" +msgstr "" + +#: execute2.c:810 +#, c-format +msgid "" +"%s turns very pale and drops to %s knees, clutching at %s chest....\n" +"" +msgstr "" + +#: execute2.c:812 +msgid "" +"You feel a sudden pressure in your chest, as if an iron band was squeezing your heart. You fall to your knees as the world dims....\n" +"" +msgstr "" + +#: execute2.c:836 +#, c-format +msgid "" +"The Cure Light Wounds spell weaves around %s, and %s wounds fade.\n" +"" +msgstr "" + +#: execute2.c:838 +msgid "" +"The Cure Light Wounds spell weaves around you, and the pain of your wounds lessens.\n" +"" +msgstr "" + +#: execute2.c:843 +#, c-format +msgid "" +"The %s Cure Light Wounds spells weave around you, and the pain of your wounds lessens.\n" +"" +msgstr "" + +#: execute2.c:844 +#, c-format +msgid "" +"The %s Cure Light Wounds spells weave around %s, and %s wounds fade.\n" +"" +msgstr "" + +#: execute2.c:856 +#, c-format +msgid "" +"The Cure Heavy Wounds spell weaves around %s, and %s wounds heal.\n" +"" +msgstr "" + +#: execute2.c:858 +msgid "" +"The Cure Heavy Wounds spell weaves around you, and your wounds heal considerably.\n" +"" +msgstr "" + +#: execute2.c:863 +#, c-format +msgid "" +"The %s Cure Heavy Wounds spells weave around you, and your wounds heal considerably.\n" +"" +msgstr "" + +#: execute2.c:864 +#, c-format +msgid "" +"The %s Cure Heavy Wounds spells weave around %s, and %s wounds heal.\n" +"" +msgstr "" + +#: execute2.c:885 +#, c-format +msgid "" +"The Raise Dead spell burns through %s. Although %s is not dead, the spell has a powerful healing effect.\n" +"" +msgstr "" + +#: execute2.c:887 +msgid "" +"The Raise Dead spell burns through you. Although you aren't dead, the spell has a powerful healing influence.\n" +"" +msgstr "" + +#: execute2.c:892 +#, c-format +msgid "" +"The %s Raise Dead spells burn through you. Although you aren't dead, the spells have a powerful healing influence.\n" +"" +msgstr "" + +#: execute2.c:893 +#, c-format +msgid "" +"The %s Raise Dead spells burn through %s. Although %s is not dead, the spells have a powerful healing effect.\n" +"" +msgstr "" + +#: execute2.c:906 +#, c-format +msgid "" +"%s is in perfect health again.\n" +"" +msgstr "" + +#: execute2.c:908 +msgid "" +"You are in perfect health again.\n" +"" +msgstr "" + +#: execute2.c:916 +#, c-format +msgid "" +"%s twitches, glows, and then jumps to %s feet! Except for a bit of incipient mold, %s is in perfect health again.\n" +"" +msgstr "" + +#: execute2.c:918 +msgid "" +"You are suddenly aware of a blast of energy running down every nerve! This is something of a shock, since you had just gotten used to being dead. Oh, well -- you'll be back eventually.\n" +"" +msgstr "" + +#: execute.c:111 +#, c-format +msgid "" +"ERROR: do not know how to permanent %d.\n" +"" +msgstr "" + +#: execute.c:122 +msgid "itself" +msgstr "" + +#: execute.c:124 +msgid "himself" +msgstr "el mismo" + +#: execute.c:126 +msgid "herself" +msgstr "ella misma" + +#: execute.c:128 +msgid "hirself" +msgstr "" + +#: execute.c:130 +msgid "ERROR-himself" +msgstr "" + +#: execute.c:139 +#: execute.c:156 +msgid "it" +msgstr "" + +#: execute.c:141 +msgid "him" +msgstr "el" + +#: execute.c:143 +#: execute.c:177 +msgid "her" +msgstr "ella" + +#: execute.c:145 +#: execute.c:179 +msgid "hir" +msgstr "" + +#: execute.c:147 +msgid "ERROR-him" +msgstr "" + +#: execute.c:158 +msgid "he" +msgstr "el" + +#: execute.c:160 +msgid "she" +msgstr "ella" + +#: execute.c:162 +msgid "ke" +msgstr "" + +#: execute.c:164 +msgid "ERROR-he" +msgstr "" + +#: execute.c:173 +msgid "its" +msgstr "su" + +#: execute.c:175 +msgid "his" +msgstr "su" + +#: execute.c:181 +msgid "ERROR-his" +msgstr "" + +#: execute.c:192 +msgid "zero" +msgstr "cero" + +#: execute.c:194 +msgid "one" +msgstr "uno" + +#: execute.c:196 +msgid "two" +msgstr "dos" + +#: execute.c:198 +msgid "three" +msgstr "tres" + +#: execute.c:200 +msgid "four" +msgstr "cuatro" + +#: execute.c:202 +msgid "five" +msgstr "cinco" + +#: execute.c:204 +msgid "six" +msgstr "seis" + +#: execute.c:206 +msgid "seven" +msgstr "siete" + +#: execute.c:208 +msgid "eight" +msgstr "ocho" + +#: execute.c:210 +msgid "nine" +msgstr "nueve" + +#: execute.c:212 +msgid "ten" +msgstr "diz" + +#: execute.c:214 +#: stupid.c:518 +#, c-format +msgid "%d" +msgstr "" + +#: execute.c:232 +#: stupid.c:111 +#: stupid.c:278 +msgid ", " +msgstr "" + +#: execute.c:238 +#, c-format +msgid "%s %s" +msgstr "" + +#: execute.c:256 +#, c-format +msgid "" +"You are unable to see %s; your %s goes wild.\n" +"" +msgstr "" + +#: execute.c:257 +#, c-format +msgid "" +"%s is unable to see you; %s %s goes wild.\n" +"" +msgstr "" + +#: execute.c:258 +#, c-format +msgid "" +"%s is unable to see %s; %s %s goes wild.\n" +"" +msgstr "" + +#: execute.c:281 +msgid "with the left hand" +msgstr "con la mano izquierda" + +#: execute.c:284 +msgid "with the right hand" +msgstr "con la mano derecha" + +#: execute.c:287 +#: stupid.c:305 +#: xquery.c:466 +msgid "with both hands" +msgstr "con ambas manos" + +#: execute.c:290 +msgid "from a Delayed Effect" +msgstr "de un efecto de retardo" + +#: execute.c:293 +msgid "ERROR:BOTH??? hands" +msgstr "" + +#: execute.c:296 +msgid "ERROR:NEITHER??? hand" +msgstr "" + +#: execute.c:301 +msgid "over the arena" +msgstr "" + +#: execute.c:304 +msgid "up into the air" +msgstr "" + +#: execute.c:308 +msgid "at " +msgstr "a" + +#: execute.c:323 +#, c-format +msgid "at %s" +msgstr "" + +#: execute.c:328 +#, c-format +msgid "" +"%s stabs (%s) %s.\n" +"" +msgstr "" + +#: execute.c:330 +#, c-format +msgid "" +"%s casts %s%s (%s) %s.\n" +"" +msgstr "" + +#: execute.c:330 +msgid "Permanent " +msgstr "" + +#: execute.c:382 +msgid "" +"The magical energies in the arena fade away.\n" +"" +msgstr "" + +#: execute.c:431 +#: execute.c:507 +#: execute.c:591 +#: execute.c:601 +#, c-format +msgid "" +"The %s is dispelled.\n" +"" +msgstr "" + +#: execute.c:448 +#: execute.c:525 +#, c-format +msgid "" +"The %s is destroyed by your Counter-Spell.\n" +"" +msgstr "" + +#: execute.c:449 +#: execute.c:526 +#, c-format +msgid "" +"The %s is destroyed by the Counter-Spell around %s.\n" +"" +msgstr "" + +#: execute.c:499 +#, c-format +msgid "" +"%s's Lightning Bolt fizzles.\n" +"" +msgstr "" + +#: execute.c:500 +msgid "" +"Since you have already cast Lightning Bolt with that formulation, the spell fizzles.\n" +"" +msgstr "" + +#: execute.c:543 +#, c-format +msgid "" +"Your %s is reflected back and forth between %s's Magic Mirror and your own! It rapidly decays and dissipates.\n" +"" +msgstr "" + +#: execute.c:544 +#, c-format +msgid "" +"%s's %s is reflected back and forth between your Magic Mirror and %s own! It rapidly decays and dissipates.\n" +"" +msgstr "" + +#: execute.c:545 +#, c-format +msgid "" +"%s's %s is reflected back and forth between %s's Magic Mirror and %s own! It rapidly decays and dissipates.\n" +"" +msgstr "" + +#: execute.c:553 +#, c-format +msgid "" +"Your %s is reflected from %s's Magic Mirror back at you.\n" +"" +msgstr "" + +#: execute.c:554 +#, c-format +msgid "" +"%s's %s reflects from your Magic Mirror back at %s.\n" +"" +msgstr "" + +#: execute.c:555 +#, c-format +msgid "" +"%s's %s reflects from %s's Magic Mirror back at %s.\n" +"" +msgstr "" + +#: execute.c:571 +#, c-format +msgid "" +"The reflected %s is destroyed by your Counter-Spell.\n" +"" +msgstr "" + +#: execute.c:572 +#, c-format +msgid "" +"The reflected %s is destroyed by the Counter-Spell around %s.\n" +"" +msgstr "" + +#: execute.c:609 +msgid "" +"ERROR: Surrender got through to spell table setup\n" +"" +msgstr "" + +#: execute.c:620 +msgid "" +"ERROR: Unknown spell in spell table setup\n" +"" +msgstr "" + +#: execute.c:718 +#, c-format +msgid "" +"The Counter-Spell on %s is dispelled.\n" +"" +msgstr "" + +#: execute.c:720 +msgid "" +"The Counter-Spell on you is dispelled.\n" +"" +msgstr "" + +#: execute.c:726 +#, c-format +msgid "" +"The Magic Mirror on %s is dispelled.\n" +"" +msgstr "" + +#: execute.c:728 +msgid "" +"The Magic Mirror on you is dispelled.\n" +"" +msgstr "" + +#: execute.c:736 +#, c-format +msgid "" +"The Dispel Magic starts to tear %s apart.\n" +"" +msgstr "" + +#: execute.c:742 +#, c-format +msgid "" +"The corpse of %s disintegrates, destroyed by the Dispel Magic.\n" +"" +msgstr "" + +#: execute.c:753 +#, c-format +msgid "" +"A Counter-Spell flares around %s.\n" +"" +msgstr "" + +#: execute.c:755 +msgid "" +"Your magical senses go numb as a Counter-Spell surrounds you.\n" +"" +msgstr "" + +#: execute.c:762 +#, c-format +msgid "" +"The Magic Mirror on %s is destroyed by the Counter-Spell.\n" +"" +msgstr "" + +#: execute.c:764 +msgid "" +"The Magic Mirror on you is destroyed by the Counter-Spell.\n" +"" +msgstr "" + +#: execute.c:773 +#, c-format +msgid "" +"A Magic Mirror swirls around %s.\n" +"" +msgstr "" + +#: execute.c:775 +msgid "" +"The bright haze of a Magic Mirror surrounds you.\n" +"" +msgstr "" + +#: execute.c:795 +msgid "Goblin" +msgstr "goblin" + +#: execute.c:795 +msgid "Ogre" +msgstr "ogro" + +#: execute.c:795 +msgid "Troll" +msgstr "troll" + +#: execute.c:795 +msgid "Giant" +msgstr "gigante" + +#: execute.c:801 +#, c-format +msgid "" +"Your %s materializes by your side.\n" +"" +msgstr "" + +#: execute.c:802 +#, c-format +msgid "" +"%s's %s appears by %s side.\n" +"" +msgstr "" + +#: execute.c:809 +#, c-format +msgid "" +"Your %s %ss materialize by your side.\n" +"" +msgstr "" + +#: execute.c:810 +#, c-format +msgid "" +"%s's %s %ss appear by %s side.\n" +"" +msgstr "" + +#: execute.c:825 +msgid "" +"A blazing Fire Elemental materializes above you.\n" +"" +msgstr "" + +#: execute.c:826 +#, c-format +msgid "" +"A blazing Fire Elemental materializes above %s.\n" +"" +msgstr "" + +#: execute.c:829 +msgid "" +"A glittering Ice Elemental materializes above you.\n" +"" +msgstr "" + +#: execute.c:830 +#, c-format +msgid "" +"A glittering Ice Elemental materializes above %s.\n" +"" +msgstr "" + +#: execute.c:877 +#, c-format +msgid "" +"The %s Fire Elementals merge into single raging form.\n" +"" +msgstr "" + +#: execute.c:881 +#, c-format +msgid "" +"The %s Ice Elementals merge into single whirling form.\n" +"" +msgstr "" + +#: execute.c:892 +msgid "" +"The Fire Elemental is dispersed into the Fire Storm.\n" +"" +msgstr "" + +#: execute.c:897 +msgid "" +"The Ice Elemental is dispersed into the Ice Storm.\n" +"" +msgstr "" + +#: execute.c:902 +msgid "" +"The Fire and Ice Storms tear each other into shreds of vapor.\n" +"" +msgstr "" + +#: execute.c:907 +msgid "" +"The Fire and Ice Elementals tear into each other, and whirl into a column of steam that dissipates in moments.\n" +"" +msgstr "" + +#: execute.c:914 +msgid "" +"The Ice Elemental is dispersed into the Fire Storm, destroying both.\n" +"" +msgstr "" + +#: execute.c:920 +msgid "" +"The Fire Elemental is dispersed into the Ice Storm, destroying both.\n" +"" +msgstr "" + +#: execute.c:926 +msgid "" +"The Fire and Ice Storms tear each other into shreds of vapor, destroying the Fire Elemental as well.\n" +"" +msgstr "" + +#: execute.c:933 +msgid "" +"The Fire and Ice Storms tear each other into shreds of vapor, destroying the Ice Elemental as well.\n" +"" +msgstr "" + +#: execute.c:940 +msgid "" +"The Fire and Ice Elementals tear into each other, and whirl into a column of steam that dissipates in moments. The Ice Storm is absorbed as well.\n" +"" +msgstr "" + +#: execute.c:948 +msgid "" +"The Fire and Ice Elementals tear into each other, and whirl into a column of steam that dissipates in moments. The Fire Storm is absorbed as well.\n" +"" +msgstr "" + +#: execute.c:956 +msgid "" +"The Fire and Ice Elementals whirl into each other, screaming in fury, and the Fire and Ice storms shriek in response. The column of Elemental energy rises to meet the cloud of vapor that descends over the arena. You are buffeted by the conflicting energies; but within moments, nothing remains.\n" +"" +msgstr "" + +#: execute.c:973 +#, c-format +msgid "" +"%s gutters and flickers out under the influence of the Resist Heat.\n" +"" +msgstr "" + +#: execute.c:980 +#, c-format +msgid "" +"%s melts away under the influence of the Resist Cold.\n" +"" +msgstr "" + +#: execute.c:985 +#, c-format +msgid "" +"%s is vaporized by the Fireball.\n" +"" +msgstr "" + +#: execute.c:991 +#, c-format +msgid "" +"Under the stress of the Blindness, %s shivers and disintegrates into random energies.\n" +"" +msgstr "" + +#: execute.c:996 +#, c-format +msgid "" +"Under the stress of the Invisibility, %s shivers and disintegrates into random energies.\n" +"" +msgstr "" + +#: execute.c:1008 +#, c-format +msgid "" +"The Remove Enchantment starts to tear %s apart.\n" +"" +msgstr "" + +#: execute.c:1028 +#, c-format +msgid "" +"The Finger of Death and Raise Dead spells aimed at %s cancel each other.\n" +"" +msgstr "" + +#: execute.c:1030 +msgid "" +"For a moment, you feel a sudden pressure in your chest, as if an iron band was squeezing your heart. Then it fades, as the Raise Dead spell burns through you.\n" +"" +msgstr "" + +#: execute.c:1038 +#, c-format +msgid "" +"The Fireball hurtling towards %s is snuffed by the Ice Storm, leaving %s enveloped in a cloud of steam.\n" +"" +msgstr "" + +#: execute.c:1040 +msgid "" +"The Fireball hurtling towards you is snuffed by the Ice Storm, leaving you enveloped in warm steam.\n" +"" +msgstr "" + +#: execute.c:1061 +#, c-format +msgid "" +"The mind-control spells (%s) aimed at you interfere with each other and fizzle, leaving you with a pounding headache.\n" +"" +msgstr "" + +#: execute.c:1062 +#, c-format +msgid "" +"The mind-control spells (%s) aimed at %s interfere with each other and fizzle.\n" +"" +msgstr "" + +#: execute.c:1093 +#, c-format +msgid "" +"The Resist Heat shrouds %s in a cool blue veil.\n" +"" +msgstr "" + +#: execute.c:1095 +msgid "" +"The Resist Heat wraps you in a pleasant blue coolness.\n" +"" +msgstr "" + +#: execute.c:1101 +#, c-format +msgid "" +"%s's veil of Resist Heat continues to glow coolly.\n" +"" +msgstr "" + +#: execute.c:1103 +msgid "" +"Your veil of Resist Heat continues to glow coolly.\n" +"" +msgstr "" + +#: execute.c:1112 +#, c-format +msgid "" +"The Resist Cold shrouds %s in a warm pink veil.\n" +"" +msgstr "" + +#: execute.c:1114 +msgid "" +"The Resist Cold wraps you in a pleasant pink warmth.\n" +"" +msgstr "" + +#: execute.c:1120 +#, c-format +msgid "" +"%s's veil of Resist Cold continues to glow warmly.\n" +"" +msgstr "" + +#: execute.c:1122 +msgid "" +"Your veil of Resist Cold continues to glow warmly.\n" +"" +msgstr "" + +#: execute.c:1130 +msgid "" +"A white circle of Protection from Evil springs up around you. You feel the Shield aura cloaking your skin.\n" +"" +msgstr "" + +#: execute.c:1131 +#, c-format +msgid "" +"A white circle of Protection from Evil springs up around %s.\n" +"" +msgstr "" + +#: execute.c:1138 +msgid "" +"Your circle of Protection from Evil flares back to full strength.\n" +"" +msgstr "" + +#: execute.c:1139 +#, c-format +msgid "" +"%s's circle of Protection from Evil flares back to full strength.\n" +"" +msgstr "" + +#: execute.c:1162 +msgid "" +"Your circle of Protection from Evil is beginning to fade.\n" +"" +msgstr "" + +#: execute.c:1163 +#, c-format +msgid "" +"%s's circle of Protection from Evil is beginning to fade.\n" +"" +msgstr "" + +#: execute.c:1166 +msgid "" +"Your circle of Protection from Evil is dimmer now.\n" +"" +msgstr "" + +#: execute.c:1167 +#, c-format +msgid "" +"%s's circle of Protection from Evil is dimmer now.\n" +"" +msgstr "" + +#: execute.c:1170 +msgid "" +"Your circle of Protection from Evil is nearly gone.\n" +"" +msgstr "" + +#: execute.c:1171 +#, c-format +msgid "" +"%s's circle of Protection from Evil is nearly gone.\n" +"" +msgstr "" + +#: main.c:31 +msgid "White" +msgstr "blanco" + +#: main.c:31 +msgid "Black" +msgstr "negro" + +#: main.c:31 +msgid "Red" +msgstr "rojo" + +#: main.c:31 +msgid "Green" +msgstr "verde" + +#: main.c:31 +msgid "Blue" +msgstr "azul" + +#: main.c:32 +msgid "Yellow" +msgstr "amarillo" + +#: main.c:32 +msgid "Orange" +msgstr "naranja" + +#: main.c:32 +msgid "Purple" +msgstr "púrpuro" + +#: main.c:32 +msgid "Grey" +msgstr "gris" + +#: main.c:32 +msgid "Charteuse" +msgstr "" + +#: main.c:72 +msgid "" +"usage: spellcast RemoteDisplay [ RemoteDisplay2 ... ]\n" +"" +msgstr "" + +#: main.c:85 +msgid ":0.0" +msgstr "" + +#: main.c:95 +#: stupid.c:491 +#, c-format +msgid "" +"You have listed only %d players!\n" +"" +msgstr "" + +#: main.c:99 +#: stupid.c:495 +#, c-format +msgid "" +"There is a maximum of %d players!\n" +"" +msgstr "" + +#: main.c:114 +msgid "" +"spellcast: exiting.\n" +"" +msgstr "" + +#: main.c:137 +msgid "Enter your gestures for your Hastened move." +msgstr "Ingresa tus gestos para movimientos agilizados." + +#: main.c:141 +msgid "Enter your gestures for your Time-Stopped move." +msgstr "Ingresa tus gestos para el movimiento durante el tiempo detenido." + +#: main.c:146 +msgid "Enter your gestures for this move, at the bottom of your gesture list." +msgstr "Ingresa tus gestos para este turno en el fondo de la lista de gestos." + +#: main.c:153 +msgid "Other people are Hastened this turn." +msgstr "Otra gente es agilizada en este turno." + +#: main.c:157 +msgid "You are frozen in time." +msgstr "Estas congelado en el tiempo." + +#: main.c:160 +msgid "You are out of the game." +msgstr "Estas fuera del juego." + +#: main.c:179 +msgid "" +"\n" +"+++ The game is a draw +++\n" +"" +msgstr "" + +#: main.c:181 +#, c-format +msgid "" +"\n" +"+++ %s has won +++\n" +"" +msgstr "" + +#: main.c:197 +msgid "Do you want to save a transcript of this game?" +msgstr "" + +#: main.c:198 +#: xquery.c:35 +#: xquery.c:391 +msgid "No" +msgstr "" + +#: main.c:211 +#, c-format +msgid "%s/spellcast-%d" +msgstr "" + +#: main.c:212 +msgid "w" +msgstr "" + +#: main.c:214 +#, c-format +msgid "" +"spellcast: unable to open %s for writing\n" +"" +msgstr "" + +#: main.c:215 +msgid "spellcast: error" +msgstr "" + +#: main.c:220 +#, c-format +msgid "" +"Saved transcript in %s.\n" +"" +msgstr "" + +#: main.c:241 +#, c-format +msgid "" +"spellcast: could not open display for player %d.\n" +"" +msgstr "" +"spellcast: no se puede abrir el display para el jugador %d.\n" +"" + +#: main.c:263 +#: main.c:331 +msgid "spellcast" +msgstr "" + +#: main.c:263 +msgid "name" +msgstr "nombre" + +#: main.c:307 +#: stupid.c:227 +#: stupid.c:318 +#: xquery.c:233 +#: xquery.c:234 +#: xquery.c:439 +#: xquery.c:476 +#: xquery.c:494 +msgid "nobody" +msgstr "nadie" + +#: main.c:309 +msgid "Nobody" +msgstr "Nadie" + +#: main.c:321 +#, c-format +msgid "" +"spellcast: the name '%s' for player %d is taken. Switching to '%s'...\n" +"" +msgstr "" +"spellcast: el nombre '%s' para el jugador %d ya está tomado. Usando '%s'...\n" +"" + +#: main.c:326 +#, c-format +msgid "Spellcast: %s" +msgstr "" + +#: main.c:331 +msgid "font" +msgstr "fuente de letras" + +#: main.c:338 +#: main.c:343 +#, c-format +msgid "" +"spellcast: could not find font %s for player %d. Switching to %s...\n" +"" +msgstr "" + +#: main.c:347 +#, c-format +msgid "" +"spellcast: could not find font %s for player %d.\n" +"" +msgstr "" + +#: main.c:401 +msgid "" +"ERROR: backing store already on\n" +"" +msgstr "" + +#: main.c:413 +msgid "" +"ERROR: backing store already off\n" +"" +msgstr "" + +#: makelist.c:25 +msgid "showpalm" +msgstr "muestra palma" + +#: makelist.c:28 +msgid "showdigit" +msgstr "muestra dedo" + +#: makelist.c:31 +msgid "showfinger" +msgstr "" + +#: makelist.c:34 +msgid "showwave" +msgstr "" + +#: makelist.c:37 +msgid "showsnap" +msgstr "" + +#: makelist.c:40 +msgid "showclap" +msgstr "" + +#: makelist.c:43 +msgid "showpalm2" +msgstr "" + +#: makelist.c:46 +msgid "showdigit2" +msgstr "" + +#: makelist.c:49 +msgid "showfinger2" +msgstr "" + +#: makelist.c:52 +msgid "showwave2" +msgstr "" + +#: makelist.c:55 +msgid "showsnap2" +msgstr "" + +#: makelist.c:58 +msgid "showclap2" +msgstr "" + +#: makelist.c:61 +msgid "nullact" +msgstr "" + +#: makelist.c:87 +#, c-format +msgid "" +"%d %d %s\n" +"" +msgstr "" + +#: makelist.c:90 +#, c-format +msgid "" +"%d %d moveto %d %d lineto stroke\n" +"" +msgstr "" + +#: makelist.c:92 +#, c-format +msgid "" +"%d %d moveto (%s) show\n" +"" +msgstr "" + +#: makelist.c:104 +msgid "" +"/Times-Roman findfont 12 scalefont setfont\n" +"" +msgstr "" + +#: makelist.c:105 +msgid "" +"0.5 setlinewidth\n" +"" +msgstr "" + +#: makelist.c:110 +msgid "" +"/Times-Bold findfont 14 scalefont setfont\n" +"" +msgstr "" + +#: makelist.c:111 +msgid "" +"306 752 moveto\n" +"" +msgstr "" + +#: makelist.c:112 +msgid "" +"(SpellCast spell lists -- sorted by gesture and name) centershow\n" +"" +msgstr "" + +#: makelist.c:113 +msgid "" +"\n" +"showpage\n" +"" +msgstr "" + +#: stupid.c:20 +msgid "*: " +msgstr "" + +#: stupid.c:32 +#: stupid.c:48 +#: stupid.c:52 +#, c-format +msgid "%d: " +msgstr "" + +#: stupid.c:36 +#, c-format +msgid "~%d: " +msgstr "" + +#: stupid.c:56 +#, c-format +msgid "~%d/~%d: " +msgstr "" + +#: stupid.c:85 +#, c-format +msgid "" +"%d: Do you want to release the %s from the Delayed Effect?\n" +" (0:no, 1:yes): " +msgstr "" + +#: stupid.c:92 +#: stupid.c:132 +#: stupid.c:149 +#: stupid.c:166 +msgid " [Please enter 0 or 1]: " +msgstr " [Porfavor ingresa 0 o 1]: " + +#: stupid.c:102 +#: xquery.c:323 +msgid "What spell do you want to cast with your left hand?" +msgstr "¿Cuál hechizo quieres enviar con tu mano izquierda?" + +#: stupid.c:104 +#: xquery.c:327 +msgid "What spell do you want to cast with your right hand?" +msgstr "¿Cuál hechizo quieres enviar con tu mano derecha?" + +#: stupid.c:106 +#, c-format +msgid "" +"%d: %s\n" +" (" +msgstr "" + +#: stupid.c:109 +#, c-format +msgid "%d: %s%s%s" +msgstr "" + +#: stupid.c:110 +msgid " [both hands]" +msgstr " [ambas manos]" + +#: stupid.c:111 +msgid "): " +msgstr "" + +#: stupid.c:117 +#: stupid.c:257 +#: stupid.c:286 +#: stupid.c:362 +#, c-format +msgid " [Please enter a number from 0 to %d]: " +msgstr " [Porfavor ingresa un número de 0 a %d]: " + +#: stupid.c:126 +#, c-format +msgid "" +"%d: Which type of elemental do you want to summon?\n" +" (0:fire, 1:ice): " +msgstr "" +"%d: ¿Cuál elemento quieres enviar?\n" +" (0:fuego, 1:hielo: " + +#: stupid.c:141 +#, c-format +msgid "" +"%d: Which of %s's hands do you want to paralyze?\n" +" (0:left, 1:right): " +msgstr "" + +#: stupid.c:158 +#, c-format +msgid "" +"%d: Which of %s's hands do you want to charm?\n" +" (0:left, 1:right): " +msgstr "" + +#: stupid.c:184 +#, c-format +msgid "" +"%d: What gesture do you want %s's %s hand to make?\n" +" (enter a letter): " +msgstr "" + +#: stupid.c:191 +msgid " [Please enter a letter]: " +msgstr "" + +#: stupid.c:206 +#: xquery.c:419 +#, c-format +msgid "Whom do you want %s to attack?" +msgstr "¿Quién quieres que %s ataque?" + +#: stupid.c:211 +#: xquery.c:424 +#, c-format +msgid "Whom do you want %s's first attack to be at?" +msgstr "¿Hacia quién quieres que sea el primer ataque de %s?" + +#: stupid.c:216 +#: xquery.c:429 +#, c-format +msgid "Whom do you want %s's second attack to be at?" +msgstr "" + +#: stupid.c:221 +#: xquery.c:434 +#, c-format +msgid "ERROR: Query about %d (%d)" +msgstr "" + +#: stupid.c:224 +#: stupid.c:313 +#, c-format +msgid "" +"%d: %s\n" +"" +msgstr "" + +#: stupid.c:245 +#: stupid.c:350 +msgid "" +"ERROR: No targets available!\n" +"" +msgstr "" + +#: stupid.c:247 +#: stupid.c:276 +#: stupid.c:352 +msgid " [" +msgstr "" + +#: stupid.c:249 +#: stupid.c:355 +#, c-format +msgid "%d: %s%s" +msgstr "" + +#: stupid.c:250 +msgid "), " +msgstr "" + +#: stupid.c:252 +#: stupid.c:281 +#: stupid.c:357 +msgid "]: " +msgstr "" + +#: stupid.c:269 +#, c-format +msgid "" +"%d: Which spell do you want to delay?\n" +"" +msgstr "" + +#: stupid.c:272 +#, c-format +msgid "" +"%d: Which spell do you want to make permanent?\n" +"" +msgstr "" + +#: stupid.c:278 +#, c-format +msgid "%s%d: %s" +msgstr "" + +#: stupid.c:301 +#: xquery.c:462 +msgid "with your left hand" +msgstr "con tu mano izquierda" + +#: stupid.c:303 +#: xquery.c:464 +msgid "with your right hand" +msgstr "con tu mano derecha" + +#: stupid.c:307 +#: xquery.c:468 +msgid "from the Delayed Effect" +msgstr "del efecto de retardo" + +#: stupid.c:309 +#: xquery.c:470 +#, c-format +msgid "Who do you want to stab at (%s)?" +msgstr "" + +#: stupid.c:311 +#: xquery.c:472 +#, c-format +msgid "Who do you want to cast %s at (%s)?" +msgstr "" + +#: stupid.c:355 +msgid "," +msgstr "" + +#: stupid.c:373 +#, c-format +msgid "" +"ERROR: Unknown query type %d!\n" +"" +msgstr "" + +#: stupid.c:422 +#: stupid.c:428 +#, c-format +msgid "%s (%d); " +msgstr "" + +#: stupid.c:440 +msgid "Arnold" +msgstr "Arnoldo" + +#: stupid.c:440 +msgid "Barbara" +msgstr "Bárbara" + +#: stupid.c:440 +msgid "Crash" +msgstr "" + +#: stupid.c:453 +msgid "-3" +msgstr "" + +#: stupid.c:506 +msgid "(hasted) " +msgstr "(agilizado) " + +#: stupid.c:509 +msgid "(timestopped) " +msgstr "(detenido en el tiempo) " + +#: stupid.c:520 +msgid ": Enter moves: " +msgstr ": Ingresar movimiento: " + +#: stupid.c:530 +msgid "" +"+++ the game is a draw +++\n" +"" +msgstr "" + +#: stupid.c:532 +#, c-format +msgid "" +"+++ %s has won +++\n" +"" +msgstr "" + +#: xbutton.c:53 +msgid "Spell List (left button: sorted by gesture)" +msgstr "lista de hechizos (botón izquierda: ordenado por gesto)" + +#: xbutton.c:55 +msgid "Spell List (middle button: alphabetical sort)" +msgstr "lista de hechizos (botón medio: ordenado alfabéticamente)" + +#: xbutton.c:57 +msgid "Spell List (right button: reversed sort by gesture)" +msgstr "lista de hechizos (botón derecho: ordenado inverso por gesto)" + +#: xbutton.c:172 +msgid "please wait...." +msgstr "porfavor espera...." + +#: xbutton.c:175 +msgid "End Move" +msgstr "Terminar turno" + +#: xbutton.c:177 +msgid "Move ENDED." +msgstr "Turno TERMINADO." + +#: xbutton.c:181 +msgid "Quit" +msgstr "Salir" + +#: xbutton.c:183 +msgid "Wait...." +msgstr "Espera...." + +#: xbutton.c:187 +msgid "End Answers" +msgstr "Terminar respuestas" + +#: xbutton.c:189 +msgid "Answers ENDED." +msgstr "Respuestas terminadas" + +#: xbutton.c:195 +msgid "Spell List" +msgstr "lista de hechizos" + +#: xbutton.c:248 +msgid "" +"ERROR: unknown button thing!\n" +"" +msgstr "" + +#: xbutton.c:293 +msgid "" +msgstr "<¿respuesta?>" + +#: xgest.c:211 +msgid "What gesture do you want to" +msgstr "¿Qué gesto quieres " + +#: xgest.c:212 +#, c-format +msgid "make with your %s hand?" +msgstr "hacer con tu mano %s?" + +#: xloop.c:317 +#: xloop.c:351 +msgid "*" +msgstr "" + +#: xloop.c:364 +#, c-format +msgid "%d %s%s%s%s%s%s%s" +msgstr "" + +#: xloop.c:365 +msgid "I" +msgstr "" + +#: xloop.c:366 +msgid "H" +msgstr "" + +#: xloop.c:367 +msgid "C" +msgstr "" + +#: xloop.c:368 +msgid "P" +msgstr "" + +#: xloop.c:369 +msgid "b" +msgstr "" + +#: xloop.c:370 +msgid "d" +msgstr "" + +#: xloop.c:371 +msgid "p" +msgstr "" + +#: xquery.c:33 +msgid "Fire" +msgstr "Fuego" + +#: xquery.c:33 +msgid "Ice" +msgstr "Hielo" + +#: xquery.c:34 +msgid "Left" +msgstr "Izquierda" + +#: xquery.c:34 +msgid "Right" +msgstr "Derecha" + +#: xquery.c:35 +msgid "Yes" +msgstr "Si" + +#: xquery.c:244 +#: xquery.c:263 +#: xquery.c:487 +#: xquery.c:505 +msgid " [invisible]" +msgstr " [invisible]" + +#: xquery.c:278 +msgid " [dead]" +msgstr " [muerto]" + +#: xquery.c:338 +#, c-format +msgid "%s [both hands]" +msgstr "%s [ambas manos]" + +#: xquery.c:360 +#, c-format +msgid "What gesture do you want %s's %s hand to make?" +msgstr "" + +#: xquery.c:373 +msgid "Which spell do you want to delay?" +msgstr "" + +#: xquery.c:377 +msgid "Which spell do you want to make permanent?" +msgstr "" + +#: xquery.c:389 +#, c-format +msgid "Do you want to release the %s from the Delayed Effect?" +msgstr "" + +#: xquery.c:398 +#, c-format +msgid "Which of %s's hands do you want to paralyze?" +msgstr "" + +#: xquery.c:402 +#, c-format +msgid "Which of %s's hands do you want to control?" +msgstr "" + +#: xquery.c:409 +msgid "Which type of elemental do you want to summon?" +msgstr "" + +#: xquery.c:554 +msgid "right hand" +msgstr "mano derecha" + +#: xtalk.c:114 +#, c-format +msgid "" +"You say \"%s\"\n" +"" +msgstr "" +"Tu dices \"%s\"\n" +"" + +#: xtalk.c:115 +#, c-format +msgid "" +"%s says \"%s\"\n" +"" +msgstr "" + +#: xtext.c:33 +msgid "pl" +msgstr "" + --- spellcast-1.0.orig/Makefile.in +++ spellcast-1.0/Makefile.in @@ -0,0 +1,107 @@ +# These three lines define the fonts that spellcast tries to use by default; +# it looks for FONT1 first, then FONT2, then FONT3. (If a user sets +# his spellcast*font resource, that is tried first, instead of FONT1.) +# You can change these to suit your environment. +FONT1 = \"-*-times-medium-r-*--14-*\" +FONT2 = \"-*-helvetica-medium-r-*--12-*\" +FONT3 = \"fixed\" + +# The next line defines the directory in which game transcripts are +# stored. It should be a fully-qualified pathname, beginning (but +# not ending) with a slash. +LOGDIR = \"/var/games/spellcast\" + +# The next lines define the directories where the executable, man page, and +# spell list postscript file are installed. Change them to whatever is appropriate. +DESTDIR=debian/tmp +DESTBIN=$(DESTDIR)/usr/games +DESTMAN=$(DESTDIR)/usr/share/man/man6 +DESTLIB=$(DESTDIR)/usr/share/doc/spellcast + +ifndef RESOLUTION +RESOLUTION = RES1024 +endif + + +# If you are compiling on a Sun and you find the game crashes +# all the time, try uncommenting the next line. +#OTHERLIBS = -lbsdmalloc +# Add -DCOLOUR to CFLAGS for colour support +# Add -DLINESEP to CFLAGS to separate rounds with a line + +CFLAGS = -O2 -g -I/usr/X11R6/include -I./bitmaps -DBODYFONT=$(FONT1) \ + -DBODYFONT_ALT=$(FONT2) -DBODYFONT_ALT2=$(FONT3) -DTRANSCRIPTDIR=$(LOGDIR) -D$(RESOLUTION) -DCOLOUR +LFLAGS = -g +# LFLAGS = -g0 -Wall -Wno-implicit +# +# +# Gettext +POFILES = @POFILES@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +PACKAGE = @PACKAGE@ +LOCALEDIR = \"/usr/share/locale\" + + +# If you are running on a system with non-default library paths, set +# the environmental variable LD_RUN_PATH when you compile the binary +#XLIB = -L/usr/local/lib -L/usr/X11R6/lib -lX11 -lsocket +XLIB = -L/usr/local/lib -L/usr/X11R6/lib -lX11 + +OBJS = engine.o espells.o execute.o execute2.o emonster.o etran.o +XOBJS = main.o xtext.o xquery.o xloop.o xgest.o xbutton.o xtalk.o + +all: spellcast + +# spellcast: the X executable +spellcast: $(OBJS) $(XOBJS) + $(CC) $(LFLAGS) -o spellcast $(OBJS) $(XOBJS) $(XLIB) $(OTHERLIBS) + +# stupid: the stupid stdin/stdout version of the game +stupid: stupid.o $(OBJS) + $(CC) $(LFLAGS) -o spellcast stupid.o $(OBJS) + +# makelist: a small program used to create spelllist.ps, which you +# shouldn't have to use, because spelllist.ps is already there. +makelist: makelist.o espells.o + $(CC) $(LFLAGS) -o makelist makelist.o espells.o + +install: spellcast + for i in spellcast spellcast[0-9]*; do \ + install -c -s $$i $(DESTBIN); \ + done + install -c spellcast.6 $(DESTMAN) + -mkdir $(DESTLIB) + install -c spelllist.ps $(DESTLIB) + +main.o: handwave.h spelllist.h xspell.h patchlevel.h +xtext.o: handwave.h spelllist.h xspell.h +xquery.o: handwave.h spelllist.h xspell.h +xloop.o: handwave.h spelllist.h xspell.h +xgest.o: handwave.h spelllist.h xspell.h +xbutton.o: handwave.h spelllist.h xspell.h +xtalk.o: handwave.h spelllist.h xspell.h + +internal.h: spelllist.h + +engine.o: handwave.h spelllist.h internal.h +espells.o: handwave.h spelllist.h internal.h +execute.o: handwave.h spelllist.h internal.h +execute2.o: handwave.h spelllist.h internal.h +emonster.o: handwave.h spelllist.h internal.h +etran.o: handwave.h spelllist.h internal.h + +stupid.o: stupid.c handwave.h spelllist.h + +# The following rule creates the spelllist.ps document, +# but you shouldn't have to use it, because it's already +# there. +spelllist.ps: makelist bitmaps/base.ps + ./makelist > tmp.ps + cat bitmaps/base.ps tmp.ps > spelllist.ps + +clean: + rm -f *~ *.o spellcast spellcast[0-9]* stupid makelist tmp.ps core --- spellcast-1.0.orig/AC_FD_MSG +++ spellcast-1.0/AC_FD_MSG @@ -0,0 +1 @@ +no --- spellcast-1.0.orig/AC_FD_CC +++ spellcast-1.0/AC_FD_CC @@ -0,0 +1,5 @@ + +#line 101 "configure" +#include "confdefs.h" + +main(){return(0);}