From 77e3814f0c0e3dea4d0032e25666f77e6f83bfff Mon Sep 17 00:00:00 2001 From: cgd Date: Sun, 21 Mar 1993 09:45:37 +0000 Subject: initial import of 386bsd-0.1 sources --- hack/hack.wield.c | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 hack/hack.wield.c (limited to 'hack/hack.wield.c') diff --git a/hack/hack.wield.c b/hack/hack.wield.c new file mode 100644 index 00000000..d0609a1c --- /dev/null +++ b/hack/hack.wield.c @@ -0,0 +1,99 @@ +/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ +/* hack.wield.c - version 1.0.3 */ + +#include "hack.h" +extern struct obj zeroobj; + +setuwep(obj) register struct obj *obj; { + setworn(obj, W_WEP); +} + +dowield() +{ + register struct obj *wep; + register int res = 0; + + multi = 0; + if(!(wep = getobj("#-)", "wield"))) /* nothing */; + else if(uwep == wep) + pline("You are already wielding that!"); + else if(uwep && uwep->cursed) + pline("The %s welded to your hand!", + aobjnam(uwep, "are")); + else if(wep == &zeroobj) { + if(uwep == 0){ + pline("You are already empty handed."); + } else { + setuwep((struct obj *) 0); + res++; + pline("You are empty handed."); + } + } else if(uarms && wep->otyp == TWO_HANDED_SWORD) + pline("You cannot wield a two-handed sword and wear a shield."); + else if(wep->owornmask & (W_ARMOR | W_RING)) + pline("You cannot wield that!"); + else { + setuwep(wep); + res++; + if(uwep->cursed) + pline("The %s %s to your hand!", + aobjnam(uwep, "weld"), + (uwep->quan == 1) ? "itself" : "themselves"); /* a3 */ + else prinv(uwep); + } + return(res); +} + +corrode_weapon(){ + if(!uwep || uwep->olet != WEAPON_SYM) return; /* %% */ + if(uwep->rustfree) + pline("Your %s not affected.", aobjnam(uwep, "are")); + else { + pline("Your %s!", aobjnam(uwep, "corrode")); + uwep->spe--; + } +} + +chwepon(otmp,amount) +register struct obj *otmp; +register amount; +{ +register char *color = (amount < 0) ? "black" : "green"; +register char *time; + if(!uwep || uwep->olet != WEAPON_SYM) { + strange_feeling(otmp, + (amount > 0) ? "Your hands twitch." + : "Your hands itch."); + return(0); + } + + if(uwep->otyp == WORM_TOOTH && amount > 0) { + uwep->otyp = CRYSKNIFE; + pline("Your weapon seems sharper now."); + uwep->cursed = 0; + return(1); + } + + if(uwep->otyp == CRYSKNIFE && amount < 0) { + uwep->otyp = WORM_TOOTH; + pline("Your weapon looks duller now."); + return(1); + } + + /* there is a (soft) upper limit to uwep->spe */ + if(amount > 0 && uwep->spe > 5 && rn2(3)) { + pline("Your %s violently green for a while and then evaporate%s.", + aobjnam(uwep, "glow"), plur(uwep->quan)); + while(uwep) /* let all of them disappear */ + /* note: uwep->quan = 1 is nogood if unpaid */ + useup(uwep); + return(1); + } + if(!rn2(6)) amount *= 2; + time = (amount*amount == 1) ? "moment" : "while"; + pline("Your %s %s for a %s.", + aobjnam(uwep, "glow"), color, time); + uwep->spe += amount; + if(amount > 0) uwep->cursed = 0; + return(1); +} -- cgit v1.2.3-56-ge451