projects
/
open-adventure.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Abolish unclean operation on OBJSOUND - it's now static.
[open-adventure.git]
/
actions.c
diff --git
a/actions.c
b/actions.c
index b6cfc33d0210328c7a2f7ed81c9fc180dfa229d6..e3a6cafea001aa144930182f7397dec107dca5e5 100644
(file)
--- a/
actions.c
+++ b/
actions.c
@@
-42,7
+42,6
@@
static int attack(FILE *input, struct command_t *command)
return GO_CLEAROBJ;
}
DESTROY(BIRD);
return GO_CLEAROBJ;
}
DESTROY(BIRD);
- game.prop[BIRD] = 0;
spk = BIRD_DEAD;
} else if (obj == VEND) {
pspeak(VEND, game.prop[VEND] + 2);
spk = BIRD_DEAD;
} else if (obj == VEND) {
pspeak(VEND, game.prop[VEND] + 2);
@@
-242,10
+241,11
@@
static int carry(token_t verb, token_t obj)
}
if (obj == WATER || obj == OIL) {
if (!HERE(BOTTLE) || LIQUID() != obj) {
}
if (obj == WATER || obj == OIL) {
if (!HERE(BOTTLE) || LIQUID() != obj) {
- if (TOTING(BOTTLE) && game.prop[BOTTLE] ==
1
)
+ if (TOTING(BOTTLE) && game.prop[BOTTLE] ==
EMPTY_BOTTLE
)
return (fill(verb, BOTTLE));
else {
return (fill(verb, BOTTLE));
else {
- if (game.prop[BOTTLE] != 1)spk = BOTTLE_FULL;
+ if (game.prop[BOTTLE] != EMPTY_BOTTLE)
+ spk = BOTTLE_FULL;
if (!TOTING(BOTTLE))spk = NO_CONTAINER;
rspeak(spk);
return GO_CLEAROBJ;
if (!TOTING(BOTTLE))spk = NO_CONTAINER;
rspeak(spk);
return GO_CLEAROBJ;
@@
-258,8
+258,8
@@
static int carry(token_t verb, token_t obj)
if (game.holdng >= INVLIMIT) {
rspeak(spk);
return GO_CLEAROBJ;
if (game.holdng >= INVLIMIT) {
rspeak(spk);
return GO_CLEAROBJ;
- } else if (obj == BIRD && game.prop[BIRD] !=
1 && -1 - game.prop[BIRD] != 1
) {
- if (game.prop[BIRD] ==
2
) {
+ } else if (obj == BIRD && game.prop[BIRD] !=
BIRD_CAGED && -1 - game.prop[BIRD] != BIRD_CAGED
) {
+ if (game.prop[BIRD] ==
BIRD_FOREST_UNCAGED
) {
DESTROY(BIRD);
rspeak(BIRD_CRAP);
return GO_CLEAROBJ;
DESTROY(BIRD);
rspeak(BIRD_CRAP);
return GO_CLEAROBJ;
@@
-270,9
+270,9
@@
static int carry(token_t verb, token_t obj)
rspeak(spk);
return GO_CLEAROBJ;
}
rspeak(spk);
return GO_CLEAROBJ;
}
- game.prop[BIRD] =
1
;
+ game.prop[BIRD] =
BIRD_CAGED
;
}
}
- if ((obj == BIRD || obj == CAGE) && (game.prop[BIRD] ==
1
|| -1 - game.prop[BIRD] == 1))
+ if ((obj == BIRD || obj == CAGE) && (game.prop[BIRD] ==
BIRD_CAGED
|| -1 - game.prop[BIRD] == 1))
CARRY(BIRD + CAGE - obj, game.loc);
CARRY(obj, game.loc);
if (obj == BOTTLE && LIQUID() != 0)
CARRY(BIRD + CAGE - obj, game.loc);
CARRY(obj, game.loc);
if (obj == BOTTLE && LIQUID() != 0)
@@
-356,12
+356,11
@@
static int discard(token_t verb, token_t obj, bool just_do_it)
} else if (obj == COINS && HERE(VEND)) {
DESTROY(COINS);
DROP(BATTERY, game.loc);
} else if (obj == COINS && HERE(VEND)) {
DESTROY(COINS);
DROP(BATTERY, game.loc);
- pspeak(BATTERY,
0
);
+ pspeak(BATTERY,
FRESH_BATTERIES
);
return GO_CLEAROBJ;
} else if (obj == BIRD && AT(DRAGON) && game.prop[DRAGON] == 0) {
rspeak(BIRD_BURNT);
DESTROY(BIRD);
return GO_CLEAROBJ;
} else if (obj == BIRD && AT(DRAGON) && game.prop[DRAGON] == 0) {
rspeak(BIRD_BURNT);
DESTROY(BIRD);
- game.prop[BIRD] = 0;
return GO_CLEAROBJ;
} else if (obj == BEAR && AT(TROLL)) {
rspeak(TROLL_SCAMPERS);
return GO_CLEAROBJ;
} else if (obj == BEAR && AT(TROLL)) {
rspeak(TROLL_SCAMPERS);
@@
-384,11
+383,13
@@
static int discard(token_t verb, token_t obj, bool just_do_it)
if (k == obj)obj = BOTTLE;
if (obj == BOTTLE && k != 0)
game.place[k] = LOC_NOWHERE;
if (k == obj)obj = BOTTLE;
if (obj == BOTTLE && k != 0)
game.place[k] = LOC_NOWHERE;
- if (obj == CAGE && game.prop[BIRD] == 1)DROP(BIRD, game.loc);
+ if (obj == CAGE && game.prop[BIRD] == BIRD_CAGED)
+ DROP(BIRD, game.loc);
DROP(obj, game.loc);
if (obj != BIRD) return GO_CLEAROBJ;
DROP(obj, game.loc);
if (obj != BIRD) return GO_CLEAROBJ;
- game.prop[BIRD] = 0;
- if (FOREST(game.loc))game.prop[BIRD] = 2;
+ game.prop[BIRD] = BIRD_UNCAGED;
+ if (FOREST(game.loc))
+ game.prop[BIRD] = BIRD_FOREST_UNCAGED;
return GO_CLEAROBJ;
}
return GO_CLEAROBJ;
}
@@
-402,14
+403,14
@@
static int drink(token_t verb, token_t obj)
if (obj != BLOOD) {
if (obj != 0 && obj != WATER)spk = RIDICULOUS_ATTEMPT;
if (spk != RIDICULOUS_ATTEMPT && LIQUID() == WATER && HERE(BOTTLE)) {
if (obj != BLOOD) {
if (obj != 0 && obj != WATER)spk = RIDICULOUS_ATTEMPT;
if (spk != RIDICULOUS_ATTEMPT && LIQUID() == WATER && HERE(BOTTLE)) {
- game.prop[BOTTLE] =
1
;
+ game.prop[BOTTLE] =
EMPTY_BOTTLE
;
game.place[WATER] = LOC_NOWHERE;
spk = BOTTLE_EMPTY;
}
} else {
DESTROY(BLOOD);
game.prop[DRAGON] = 2;
game.place[WATER] = LOC_NOWHERE;
spk = BOTTLE_EMPTY;
}
} else {
DESTROY(BLOOD);
game.prop[DRAGON] = 2;
-
OBJSND[BIRD] = OBJSND[BIRD] + 3
;
+
game.blooded = true
;
spk = HEAD_BUZZES;
}
rspeak(spk);
spk = HEAD_BUZZES;
}
rspeak(spk);
@@
-444,7
+445,8
@@
static int extinguish(token_t verb, int obj)
{
int spk = ACTSPK[verb];
if (obj == INTRANSITIVE) {
{
int spk = ACTSPK[verb];
if (obj == INTRANSITIVE) {
- if (HERE(LAMP) && game.prop[LAMP] == 1)obj = LAMP;
+ if (HERE(LAMP) && game.prop[LAMP] == LAMP_BRIGHT)
+ obj = LAMP;
if (HERE(URN) && game.prop[URN] == 2)obj = obj * NOBJECTS + URN;
if (obj == INTRANSITIVE || obj == 0 || obj > NOBJECTS) return GO_UNKNOWN;
}
if (HERE(URN) && game.prop[URN] == 2)obj = obj * NOBJECTS + URN;
if (obj == INTRANSITIVE || obj == 0 || obj > NOBJECTS) return GO_UNKNOWN;
}
@@
-453,7
+455,7
@@
static int extinguish(token_t verb, int obj)
game.prop[URN] = game.prop[URN] / 2;
spk = URN_DARK;
} else if (obj == LAMP) {
game.prop[URN] = game.prop[URN] / 2;
spk = URN_DARK;
} else if (obj == LAMP) {
- game.prop[LAMP] =
0
;
+ game.prop[LAMP] =
LAMP_DARK
;
rspeak(LAMP_OFF);
spk = DARK(game.loc) ? PITCH_DARK : NO_MESSAGE;
} else if (obj == DRAGON || obj == VOLCANO)
rspeak(LAMP_OFF);
spk = DARK(game.loc) ? PITCH_DARK : NO_MESSAGE;
} else if (obj == DRAGON || obj == VOLCANO)
@@
-476,7
+478,6
@@
static int feed(token_t verb, token_t obj)
if (obj == TROLL)spk = TROLL_VICES;
if (obj == SNAKE && !game.closed && HERE(BIRD)) {
DESTROY(BIRD);
if (obj == TROLL)spk = TROLL_VICES;
if (obj == SNAKE && !game.closed && HERE(BIRD)) {
DESTROY(BIRD);
- game.prop[BIRD] = 0;
spk = BIRD_DEVOURED;
}
} else if (obj == DWARF) {
spk = BIRD_DEVOURED;
}
} else if (obj == DWARF) {
@@
-534,7
+535,7
@@
int fill(token_t verb, token_t obj)
return GO_CLEAROBJ;
}
game.place[k] = LOC_NOWHERE;
return GO_CLEAROBJ;
}
game.place[k] = LOC_NOWHERE;
- game.prop[BOTTLE] =
1
;
+ game.prop[BOTTLE] =
EMPTY_BOTTLE
;
if (k == OIL)game.prop[URN] = 1;
spk = WATER_URN + game.prop[URN];
rspeak(spk);
if (k == OIL)game.prop[URN] = 1;
spk = WATER_URN + game.prop[URN];
rspeak(spk);
@@
-552,6
+553,7
@@
int fill(token_t verb, token_t obj)
if (LIQUID() != 0)
spk = BOTTLE_FULL;
if (spk == BOTTLED_WATER) {
if (LIQUID() != 0)
spk = BOTTLE_FULL;
if (spk == BOTTLED_WATER) {
+ /* FIXME: Arithmetic on property values */
game.prop[BOTTLE] = MOD(conditions[game.loc], 4) / 2 * 2;
k = LIQUID();
if (TOTING(BOTTLE))
game.prop[BOTTLE] = MOD(conditions[game.loc], 4) / 2 * 2;
k = LIQUID();
if (TOTING(BOTTLE))
@@
-636,7
+638,8
@@
static int light(token_t verb, token_t obj)
{
int spk = ACTSPK[verb];
if (obj == INTRANSITIVE) {
{
int spk = ACTSPK[verb];
if (obj == INTRANSITIVE) {
- if (HERE(LAMP) && game.prop[LAMP] == 0 && game.limit >= 0)obj = LAMP;
+ if (HERE(LAMP) && game.prop[LAMP] == LAMP_DARK && game.limit >= 0)
+ obj = LAMP;
if (HERE(URN) && game.prop[URN] == 1)obj = obj * NOBJECTS + URN;
if (obj == INTRANSITIVE || obj == 0 || obj > NOBJECTS) return GO_UNKNOWN;
}
if (HERE(URN) && game.prop[URN] == 1)obj = obj * NOBJECTS + URN;
if (obj == INTRANSITIVE || obj == 0 || obj > NOBJECTS) return GO_UNKNOWN;
}
@@
-659,7
+662,7
@@
static int light(token_t verb, token_t obj)
rspeak(spk);
return GO_CLEAROBJ;
}
rspeak(spk);
return GO_CLEAROBJ;
}
- game.prop[LAMP] =
1
;
+ game.prop[LAMP] =
LAMP_BRIGHT
;
rspeak(LAMP_ON);
if (game.wzdark)
return GO_TOP;
rspeak(LAMP_ON);
if (game.wzdark)
return GO_TOP;
@@
-684,7
+687,11
@@
static int listen(void)
for (int i = 1; i <= NOBJECTS; i++) {
if (!HERE(i) || OBJSND[i] == 0 || game.prop[i] < 0)
continue;
for (int i = 1; i <= NOBJECTS; i++) {
if (!HERE(i) || OBJSND[i] == 0 || game.prop[i] < 0)
continue;
- pspeak(i, OBJSND[i] + game.prop[i], game.zzword);
+ int mi = OBJSND[i] + game.prop[i];
+ if (i == BIRD)
+ /* FIXME: Arithmetic on state values */
+ mi += 3 * game.blooded;
+ pspeak(i, mi, game.zzword);
spk = NO_MESSAGE;
if (i == BIRD && OBJSND[i] + game.prop[i] == 8)
DESTROY(BIRD);
spk = NO_MESSAGE;
if (i == BIRD && OBJSND[i] + game.prop[i] == 8)
DESTROY(BIRD);
@@
-729,7
+736,7
@@
static int lock(token_t verb, token_t obj)
if (!game.panic)game.clock2 = PANICTIME;
game.panic = true;
} else {
if (!game.panic)game.clock2 = PANICTIME;
game.panic = true;
} else {
- game.prop[GRATE] = (verb == LOCK) ?
0 : 1
;
+ game.prop[GRATE] = (verb == LOCK) ?
GRATE_CLOSED : GRATE_OPEN
;
spk = game.prop[GRATE] ? GRATE_UNLOCKED : GRATE_LOCKED;
}
}
spk = game.prop[GRATE] ? GRATE_UNLOCKED : GRATE_LOCKED;
}
}
@@
-756,7
+763,7
@@
static int pour(token_t verb, token_t obj)
}
if (HERE(URN) && game.prop[URN] == 0)
return fill(verb, URN);
}
if (HERE(URN) && game.prop[URN] == 0)
return fill(verb, URN);
- game.prop[BOTTLE] =
1
;
+ game.prop[BOTTLE] =
EMPTY_BOTTLE
;
game.place[obj] = LOC_NOWHERE;
spk = GROUND_WET;
if (!(AT(PLANT) || AT(DOOR))) {
game.place[obj] = LOC_NOWHERE;
spk = GROUND_WET;
if (!(AT(PLANT) || AT(DOOR))) {
@@
-966,7
+973,9
@@
static int wave(token_t verb, token_t obj)
rspeak(spk);
return GO_CLEAROBJ;
}
rspeak(spk);
return GO_CLEAROBJ;
}
- if (HERE(BIRD))spk = FREE_FLY + MOD(game.prop[BIRD], 2);
+ /* FIXME: Arithemetic on proprty values */
+ if (HERE(BIRD))
+ spk = FREE_FLY + MOD(game.prop[BIRD], 2);
if (spk == FREE_FLY && game.loc == game.place[STEPS] && game.prop[JADE] < 0) {
DROP(JADE, game.loc);
game.prop[JADE] = 0;
if (spk == FREE_FLY && game.loc == game.place[STEPS] && game.prop[JADE] < 0) {
DROP(JADE, game.loc);
game.prop[JADE] = 0;