|
|
1.1 ! root 1: /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ ! 2: /* hack.wield.c - version 1.0.3 */ ! 3: ! 4: #include "hack.h" ! 5: extern struct obj zeroobj; ! 6: ! 7: setuwep(obj) register struct obj *obj; { ! 8: setworn(obj, W_WEP); ! 9: } ! 10: ! 11: dowield() ! 12: { ! 13: register struct obj *wep; ! 14: register int res = 0; ! 15: ! 16: multi = 0; ! 17: if(!(wep = getobj("#-)", "wield"))) /* nothing */; ! 18: else if(uwep == wep) ! 19: pline("You are already wielding that!"); ! 20: else if(uwep && uwep->cursed) ! 21: pline("The %s welded to your hand!", ! 22: aobjnam(uwep, "are")); ! 23: else if(wep == &zeroobj) { ! 24: if(uwep == 0){ ! 25: pline("You are already empty handed."); ! 26: } else { ! 27: setuwep((struct obj *) 0); ! 28: res++; ! 29: pline("You are empty handed."); ! 30: } ! 31: } else if(uarms && wep->otyp == TWO_HANDED_SWORD) ! 32: pline("You cannot wield a two-handed sword and wear a shield."); ! 33: else if(wep->owornmask & (W_ARMOR | W_RING)) ! 34: pline("You cannot wield that!"); ! 35: else { ! 36: setuwep(wep); ! 37: res++; ! 38: if(uwep->cursed) ! 39: pline("The %s %s to your hand!", ! 40: aobjnam(uwep, "weld"), ! 41: (uwep->quan == 1) ? "itself" : "themselves"); /* a3 */ ! 42: else prinv(uwep); ! 43: } ! 44: return(res); ! 45: } ! 46: ! 47: corrode_weapon(){ ! 48: if(!uwep || uwep->olet != WEAPON_SYM) return; /* %% */ ! 49: if(uwep->rustfree) ! 50: pline("Your %s not affected.", aobjnam(uwep, "are")); ! 51: else { ! 52: pline("Your %s!", aobjnam(uwep, "corrode")); ! 53: uwep->spe--; ! 54: } ! 55: } ! 56: ! 57: chwepon(otmp,amount) ! 58: register struct obj *otmp; ! 59: register amount; ! 60: { ! 61: register char *color = (amount < 0) ? "black" : "green"; ! 62: register char *time; ! 63: if(!uwep || uwep->olet != WEAPON_SYM) { ! 64: strange_feeling(otmp, ! 65: (amount > 0) ? "Your hands twitch." ! 66: : "Your hands itch."); ! 67: return(0); ! 68: } ! 69: ! 70: if(uwep->otyp == WORM_TOOTH && amount > 0) { ! 71: uwep->otyp = CRYSKNIFE; ! 72: pline("Your weapon seems sharper now."); ! 73: uwep->cursed = 0; ! 74: return(1); ! 75: } ! 76: ! 77: if(uwep->otyp == CRYSKNIFE && amount < 0) { ! 78: uwep->otyp = WORM_TOOTH; ! 79: pline("Your weapon looks duller now."); ! 80: return(1); ! 81: } ! 82: ! 83: /* there is a (soft) upper limit to uwep->spe */ ! 84: if(amount > 0 && uwep->spe > 5 && rn2(3)) { ! 85: pline("Your %s violently green for a while and then evaporate%s.", ! 86: aobjnam(uwep, "glow"), plur(uwep->quan)); ! 87: while(uwep) /* let all of them disappear */ ! 88: /* note: uwep->quan = 1 is nogood if unpaid */ ! 89: useup(uwep); ! 90: return(1); ! 91: } ! 92: if(!rn2(6)) amount *= 2; ! 93: time = (amount*amount == 1) ? "moment" : "while"; ! 94: pline("Your %s %s for a %s.", ! 95: aobjnam(uwep, "glow"), color, time); ! 96: uwep->spe += amount; ! 97: if(amount > 0) uwep->cursed = 0; ! 98: return(1); ! 99: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.