This modifies obj_to_room() to automatically sink non-floating objects put
in a room. This also fixes the order of things in do_load() so as to not
look odd. Players will still take 20% damage while drowning every tick.
I like this version better.
diff -upPr -x *.o ../stk/act.wizard.c ./act.wizard.c
--- ../stk/act.wizard.c Sat Apr 13 19:59:44 1996
+++ ./act.wizard.c Wed Oct 15 18:04:38 1997
@@ -1048,10 +1048,10 @@ ACMD(do_load)
return;
}
obj = read_object(r_num, REAL);
- obj_to_room(obj, ch->in_room);
act("$n makes a strange magical gesture.", TRUE, ch, 0, 0, TO_ROOM);
act("$n has created $p!", FALSE, ch, obj, 0, TO_ROOM);
act("You create $p.", FALSE, ch, obj, 0, TO_CHAR);
+ obj_to_room(obj, ch->in_room);
} else
send_to_char("That'll have to be either 'obj' or 'mob'.\r\n", ch);
}
diff -upPr -x *.o ../stk/handler.c ./handler.c
--- ../stk/handler.c Sat Apr 13 19:19:40 1996
+++ ./handler.c Wed Oct 15 17:59:22 1997
@@ -648,7 +648,12 @@ void obj_to_room(struct obj_data * objec
{
if (!object || room < 0 || room > top_of_world)
log("SYSERR: Illegal value(s) passed to obj_to_room");
- else {
+ else if (GET_OBJ_WEIGHT(object) > 0 && (SECT(room) == SECT_WATER_SWIM ||
+ SECT(room) == SECT_WATER_NOSWIM)) {
+ object->in_room = room; /* act() target room. */
+ act("$p sinks into the watery depths.", FALSE, 0, object, 0, TO_ROOM);
+ extract_obj(object);
+ } else {
object->next_content = world[room].contents;
world[room].contents = object;
object->in_room = room;
diff -upPr -x *.o ../stk/limits.c ./limits.c
--- ../stk/limits.c Fri Apr 12 23:39:21 1996
+++ ./limits.c Wed Oct 15 18:02:37 1997
@@ -22,6 +22,7 @@
titles[(int)GET_CLASS(ch)][(int)GET_LEVEL(ch)].title_m : \
titles[(int)GET_CLASS(ch)][(int)GET_LEVEL(ch)].title_f)
+extern int has_boat(struct char_data *ch);
extern struct char_data *character_list;
extern struct obj_data *object_list;
@@ -401,8 +402,17 @@ void point_update(void)
damage(i, i, 2, TYPE_SUFFERING);
if (!IS_NPC(i)) {
update_char_objects(i);
+
if (GET_LEVEL(i) < LVL_GOD)
check_idling(i);
+
+ if (GET_LEVEL(i) < LVL_IMMORT)
+ if (SECT(i->in_room) == SECT_WATER_NOSWIM && !has_boat(i)) {
+ act("$n thrashes about in the water straining to stay afloat.", FALSE,
+ i, 0, 0, TO_ROOM);
+ send_to_char("You are drowning!\r\n", i);
+ damage(i, i, GET_MAX_HIT(i) / 5, TYPE_SUFFERING); /* TYPE_DROWNING ? */
+ }
}
}
Now I suppose we should have a fly spell...
--
George Greer - Me@Null.net | Genius may have its limitations, but stupidity
http://www.van.ml.org/~greerga | is not thus handicapped. -- Elbert Hubbard
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/08/00 PST