Okay... I am trying to add guns to our mud, but i want to do a little
twist.
I want to make it so it has clips, and it uses 1 round every pulse of
violence. I got everything except the round subtraction.
Could you tell me what to add?
act.info.c:
in look_in_obj:
} else if ((GET_OBJ_TYPE(obj) != ITEM_DRINKCON) &&
(GET_OBJ_TYPE(obj) != ITEM_FOUNTAIN) &&
(GET_OBJ_TYPE(obj) != ITEM_CONTAINER))
+ {
+ if ( (GET_OBJ_TYPE(obj) == ITEM_FIREWEAPON) ||
+ (GET_OBJ_TYPE(obj) == ITEM_MISSILE) ) {
+ sprintf(buf, "It contains %d units of
ammunition.\r\n", GET_OBJ_VAL(obj,3));
+ send_to_char(buf,ch);
+ } else {
+ send_to_char("There's nothing inside that!\r\n",
ch);
+ }
} else {
if (GET_OBJ_TYPE(obj) == ITEM_CONTAINER) {
if (IS_SET(GET_OBJ_VAL(obj, 1), CONT_CLOSED))
act.offensive.c:
add:
ACMD(do_load_weapon)
{
/* arg1 = fire weapon arg2 = missiles */
char arg1[MAX_INPUT_LENGTH];
char arg2[MAX_INPUT_LENGTH];
struct obj_data *missile;
struct obj_data *weapon = GET_EQ(ch, WEAR_WIELD);
int num_needed = 0;
int num_left = 0;
int num_ammo = 0;
two_arguments(argument, arg1, arg2);
if (!*arg1 || !*arg2) {
send_to_char("Usage LOAD|RELOAD <weapon> <ammo>",ch);
return;
}
if (!weapon) {
send_to_char("You must hold the weapon to load it.",ch);
return;
}
if (GET_OBJ_TYPE(weapon) != ITEM_FIREWEAPON) {
send_to_char("That item doesn't use ammunition!",ch);
return;
}
missile = get_obj_in_list_vis(ch, arg2, ch->carrying);
if (!missile) {
send_to_char("What are you trying to use as ammunition?",ch);
return;
}
if (GET_OBJ_TYPE(missile) != ITEM_MISSILE) {
send_to_char("That isn't ammunition!",ch);
return;
}
if (GET_OBJ_VAL(missile,0) != GET_OBJ_VAL(weapon,0)) {
send_to_char("The ammunition won't fit in the weapon!",ch);
return;
}
num_needed = GET_OBJ_VAL(weapon,2) - GET_OBJ_VAL(weapon,3);
if (!num_needed) {
send_to_char("It's already fully loaded.",ch);
return;
}
num_ammo = GET_OBJ_VAL(missile,3);
if (!num_ammo) {
/* shouldn't really get here.. this one's for Murphy :) */
send_to_char("It's empty!",ch);
extract_obj(missile);
return;
}
if (num_ammo <= num_needed) {
GET_OBJ_VAL(weapon,3) += num_ammo;
extract_obj(missile);
} else {
GET_OBJ_VAL(weapon,3) += num_needed;
GET_OBJ_VAL(missile,3) -= num_needed;
}
act("You load $p", FALSE, ch, weapon, 0, TO_CHAR);
act("$n loads $p", FALSE, ch, weapon, 0, TO_ROOM);
}
Now to subtract ammo, i have to include this in somewhere. (hit?)
if ( (GET_OBJ_TYPE(weapon) == ITEM_FIREWEAPON) ) {
GET_OBJ_VAL(weapon, 3) -= 1;
Would anyone tell me how to format that so that it works? Thanks.
-CyberMan
______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com
+------------------------------------------------------------+
| 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/15/00 PST