mirror of
https://github.com/tbamud/tbamud.git
synced 2026-04-30 04:41:51 +02:00
Compare commits
10 Commits
8548bbea99
...
552461df51
| Author | SHA1 | Date | |
|---|---|---|---|
| 552461df51 | |||
| 10251814f6 | |||
| d4089c58e8 | |||
| a465860553 | |||
| b9f49478a3 | |||
| 171381f0ea | |||
| dbd6bfc103 | |||
| 1dfbe0fa83 | |||
| 039e45c5ef | |||
| 862c887b54 |
@@ -6,6 +6,9 @@ on:
|
||||
pull_request_target:
|
||||
branches: [ "master" ]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
|
||||
+79
-59
@@ -777,6 +777,15 @@ void weight_change_object(struct obj_data *obj, int weight)
|
||||
}
|
||||
}
|
||||
|
||||
#define DRINK_CON_MAX(cont) (GET_OBJ_VAL((cont), 0))
|
||||
#define DRINK_CON_NOW(cont) (GET_OBJ_VAL((cont), 1))
|
||||
#define DRINK_CON_TYPE(cont) (GET_OBJ_VAL((cont), 2))
|
||||
#define DRINK_CON_POISON(cont) (GET_OBJ_VAL((cont), 3))
|
||||
|
||||
#define LIMITED_DRINK_CONTAINER(cont) (DRINK_CON_MAX((cont)) >= 0 && DRINK_CON_NOW((cont)) >= 0)
|
||||
#define EMPTY_DRINK_CONTAINER(cont) (LIMITED_DRINK_CONTAINER((cont)) && DRINK_CON_NOW((cont)) < 1)
|
||||
|
||||
|
||||
void name_from_drinkcon(struct obj_data *obj)
|
||||
{
|
||||
const char *liqname;
|
||||
@@ -788,13 +797,12 @@ void name_from_drinkcon(struct obj_data *obj)
|
||||
if (obj->name == obj_proto[GET_OBJ_RNUM(obj)].name)
|
||||
obj->name = strdup(obj_proto[GET_OBJ_RNUM(obj)].name);
|
||||
|
||||
liqname = drinknames[GET_OBJ_VAL(obj, 2)];
|
||||
liqname = drinknames[DRINK_CON_TYPE(obj)];
|
||||
|
||||
remove_from_string(obj->name, liqname);
|
||||
new_name = right_trim_whitespace(obj->name);
|
||||
free(obj->name);
|
||||
obj->name = new_name;
|
||||
|
||||
}
|
||||
|
||||
void name_to_drinkcon(struct obj_data *obj, int type)
|
||||
@@ -813,6 +821,7 @@ void name_to_drinkcon(struct obj_data *obj, int type)
|
||||
obj->name = new_name;
|
||||
}
|
||||
|
||||
|
||||
ACMD(do_drink)
|
||||
{
|
||||
char arg[MAX_INPUT_LENGTH];
|
||||
@@ -873,7 +882,7 @@ ACMD(do_drink)
|
||||
send_to_char(ch, "Your stomach can't contain anymore!\r\n");
|
||||
return;
|
||||
}
|
||||
if (GET_OBJ_VAL(temp, 1) < 1) {
|
||||
if (EMPTY_DRINK_CONTAINER(temp)) {
|
||||
send_to_char(ch, "It is empty.\r\n");
|
||||
return;
|
||||
}
|
||||
@@ -884,33 +893,38 @@ ACMD(do_drink)
|
||||
if (subcmd == SCMD_DRINK) {
|
||||
char buf[MAX_STRING_LENGTH];
|
||||
|
||||
snprintf(buf, sizeof(buf), "$n drinks %s from $p.", drinks[GET_OBJ_VAL(temp, 2)]);
|
||||
snprintf(buf, sizeof(buf), "$n drinks %s from $p.", drinks[DRINK_CON_TYPE(temp)]);
|
||||
act(buf, TRUE, ch, temp, 0, TO_ROOM);
|
||||
|
||||
send_to_char(ch, "You drink the %s.\r\n", drinks[GET_OBJ_VAL(temp, 2)]);
|
||||
send_to_char(ch, "You drink the %s.\r\n", drinks[DRINK_CON_TYPE(temp)]);
|
||||
|
||||
if (drink_aff[GET_OBJ_VAL(temp, 2)][DRUNK] > 0)
|
||||
amount = (25 - GET_COND(ch, THIRST)) / drink_aff[GET_OBJ_VAL(temp, 2)][DRUNK];
|
||||
if (drink_aff[DRINK_CON_TYPE(temp)][DRUNK] > 0)
|
||||
amount = (25 - GET_COND(ch, THIRST)) / drink_aff[DRINK_CON_TYPE(temp)][DRUNK];
|
||||
else
|
||||
amount = rand_number(3, 10);
|
||||
|
||||
} else {
|
||||
act("$n sips from $p.", TRUE, ch, temp, 0, TO_ROOM);
|
||||
send_to_char(ch, "It tastes like %s.\r\n", drinks[GET_OBJ_VAL(temp, 2)]);
|
||||
send_to_char(ch, "It tastes like %s.\r\n", drinks[DRINK_CON_TYPE(temp)]);
|
||||
amount = 1;
|
||||
}
|
||||
|
||||
amount = MIN(amount, GET_OBJ_VAL(temp, 1));
|
||||
/* For limited drink containers with remaining contents, don't drink more
|
||||
* than the amount currently in the container. Unlimited containers are
|
||||
* handled separately and are not clamped here.
|
||||
*/
|
||||
if (LIMITED_DRINK_CONTAINER(temp))
|
||||
amount = MIN(amount, DRINK_CON_NOW(temp));
|
||||
|
||||
/* You can't subtract more than the object weighs, unless its unlimited. */
|
||||
if (GET_OBJ_VAL(temp, 0) > 0) {
|
||||
if (LIMITED_DRINK_CONTAINER(temp)) {
|
||||
weight = MIN(amount, GET_OBJ_WEIGHT(temp));
|
||||
weight_change_object(temp, -weight); /* Subtract amount */
|
||||
}
|
||||
|
||||
gain_condition(ch, DRUNK, drink_aff[GET_OBJ_VAL(temp, 2)][DRUNK] * amount / 4);
|
||||
gain_condition(ch, HUNGER, drink_aff[GET_OBJ_VAL(temp, 2)][HUNGER] * amount / 4);
|
||||
gain_condition(ch, THIRST, drink_aff[GET_OBJ_VAL(temp, 2)][THIRST] * amount / 4);
|
||||
gain_condition(ch, DRUNK, drink_aff[DRINK_CON_TYPE(temp)][DRUNK] * amount / 4);
|
||||
gain_condition(ch, HUNGER, drink_aff[DRINK_CON_TYPE(temp)][HUNGER] * amount / 4);
|
||||
gain_condition(ch, THIRST, drink_aff[DRINK_CON_TYPE(temp)][THIRST] * amount / 4);
|
||||
|
||||
if (GET_COND(ch, DRUNK) > 10)
|
||||
send_to_char(ch, "You feel drunk.\r\n");
|
||||
@@ -921,7 +935,7 @@ ACMD(do_drink)
|
||||
if (GET_COND(ch, HUNGER) > 20)
|
||||
send_to_char(ch, "You are full.\r\n");
|
||||
|
||||
if (GET_OBJ_VAL(temp, 3) && GET_LEVEL(ch) < LVL_IMMORT) { /* The crap was poisoned ! */
|
||||
if (DRINK_CON_POISON(temp) && GET_LEVEL(ch) < LVL_IMMORT) { /* The crap was poisoned ! */
|
||||
send_to_char(ch, "Oops, it tasted rather strange!\r\n");
|
||||
act("$n chokes and utters some strange sounds.", TRUE, ch, 0, 0, TO_ROOM);
|
||||
|
||||
@@ -932,12 +946,13 @@ ACMD(do_drink)
|
||||
affect_join(ch, &af, FALSE, FALSE, FALSE, FALSE);
|
||||
}
|
||||
/* Empty the container (unless unlimited), and no longer poison. */
|
||||
if (GET_OBJ_VAL(temp, 0) > 0) {
|
||||
GET_OBJ_VAL(temp, 1) -= amount;
|
||||
if (!GET_OBJ_VAL(temp, 1)) { /* The last bit */
|
||||
if (LIMITED_DRINK_CONTAINER(temp)) {
|
||||
amount = MIN(amount, DRINK_CON_NOW(temp)); // never subtract more than the current amount
|
||||
DRINK_CON_NOW(temp) -= amount;
|
||||
if (!DRINK_CON_NOW(temp)) { /* The last bit */
|
||||
name_from_drinkcon(temp);
|
||||
GET_OBJ_VAL(temp, 2) = 0;
|
||||
GET_OBJ_VAL(temp, 3) = 0;
|
||||
DRINK_CON_TYPE(temp) = 0;
|
||||
DRINK_CON_POISON(temp) = 0;
|
||||
}
|
||||
}
|
||||
return;
|
||||
@@ -1064,7 +1079,7 @@ ACMD(do_pour)
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (GET_OBJ_VAL(from_obj, 1) == 0) {
|
||||
if (EMPTY_DRINK_CONTAINER(from_obj)) {
|
||||
act("The $p is empty.", FALSE, ch, from_obj, 0, TO_CHAR);
|
||||
return;
|
||||
}
|
||||
@@ -1074,19 +1089,22 @@ ACMD(do_pour)
|
||||
return;
|
||||
}
|
||||
if (!str_cmp(arg2, "out")) {
|
||||
if (GET_OBJ_VAL(from_obj, 0) > 0) {
|
||||
act("$n empties $p.", TRUE, ch, from_obj, 0, TO_ROOM);
|
||||
act("You empty $p.", FALSE, ch, from_obj, 0, TO_CHAR);
|
||||
|
||||
weight_change_object(from_obj, -GET_OBJ_VAL(from_obj, 1)); /* Empty */
|
||||
|
||||
name_from_drinkcon(from_obj);
|
||||
GET_OBJ_VAL(from_obj, 1) = 0;
|
||||
GET_OBJ_VAL(from_obj, 2) = 0;
|
||||
GET_OBJ_VAL(from_obj, 3) = 0;
|
||||
if (!LIMITED_DRINK_CONTAINER(from_obj)) {
|
||||
send_to_char(ch, "You can't pour that out! There's simply too much in it.\r\n");
|
||||
return;
|
||||
}
|
||||
else
|
||||
send_to_char(ch, "You can't possibly pour that container out!\r\n");
|
||||
|
||||
/* pour out */
|
||||
act("$n empties $p.", TRUE, ch, from_obj, 0, TO_ROOM);
|
||||
act("You empty $p.", FALSE, ch, from_obj, 0, TO_CHAR);
|
||||
|
||||
weight_change_object(from_obj, -DRINK_CON_NOW(from_obj)); /* Empty */
|
||||
|
||||
name_from_drinkcon(from_obj);
|
||||
|
||||
DRINK_CON_NOW(from_obj) = 0;
|
||||
DRINK_CON_TYPE(from_obj) = 0;
|
||||
DRINK_CON_POISON(from_obj) = 0;
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -1094,8 +1112,7 @@ ACMD(do_pour)
|
||||
send_to_char(ch, "You can't find it!\r\n");
|
||||
return;
|
||||
}
|
||||
if ((GET_OBJ_TYPE(to_obj) != ITEM_DRINKCON) &&
|
||||
(GET_OBJ_TYPE(to_obj) != ITEM_FOUNTAIN)) {
|
||||
if ((GET_OBJ_TYPE(to_obj) != ITEM_DRINKCON) && (GET_OBJ_TYPE(to_obj) != ITEM_FOUNTAIN)) {
|
||||
send_to_char(ch, "You can't pour anything into that.\r\n");
|
||||
return;
|
||||
}
|
||||
@@ -1104,59 +1121,62 @@ ACMD(do_pour)
|
||||
send_to_char(ch, "A most unproductive effort.\r\n");
|
||||
return;
|
||||
}
|
||||
if ((GET_OBJ_VAL(to_obj, 0) < 0) ||
|
||||
(!(GET_OBJ_VAL(to_obj, 1) < GET_OBJ_VAL(to_obj, 0)))) {
|
||||
if (!EMPTY_DRINK_CONTAINER(to_obj) && DRINK_CON_TYPE(to_obj) != DRINK_CON_TYPE(from_obj)) {
|
||||
send_to_char(ch, "There is already another liquid in it!\r\n");
|
||||
return;
|
||||
}
|
||||
if (!(GET_OBJ_VAL(to_obj, 1) < GET_OBJ_VAL(to_obj, 0))) {
|
||||
// Not allowed to fill an unlimited container, or a container that is already full.
|
||||
if (!LIMITED_DRINK_CONTAINER(to_obj) || DRINK_CON_NOW(to_obj) >= DRINK_CON_MAX(to_obj)) {
|
||||
send_to_char(ch, "There is no room for more.\r\n");
|
||||
return;
|
||||
}
|
||||
if (subcmd == SCMD_POUR)
|
||||
send_to_char(ch, "You pour the %s into the %s.", drinks[GET_OBJ_VAL(from_obj, 2)], arg2);
|
||||
send_to_char(ch, "You pour the %s into the %s.\r\n", drinks[DRINK_CON_TYPE(from_obj)], arg2);
|
||||
|
||||
if (subcmd == SCMD_FILL) {
|
||||
act("You gently fill $p from $P.", FALSE, ch, to_obj, from_obj, TO_CHAR);
|
||||
act("$n gently fills $p from $P.", TRUE, ch, to_obj, from_obj, TO_ROOM);
|
||||
}
|
||||
/* New alias */
|
||||
if (GET_OBJ_VAL(to_obj, 1) == 0)
|
||||
name_to_drinkcon(to_obj, GET_OBJ_VAL(from_obj, 2));
|
||||
if (EMPTY_DRINK_CONTAINER(to_obj))
|
||||
name_to_drinkcon(to_obj, DRINK_CON_TYPE(from_obj));
|
||||
|
||||
/* First same type liq. */
|
||||
GET_OBJ_VAL(to_obj, 2) = GET_OBJ_VAL(from_obj, 2);
|
||||
DRINK_CON_TYPE(to_obj) = DRINK_CON_TYPE(from_obj);
|
||||
|
||||
/* Then how much to pour */
|
||||
if (GET_OBJ_VAL(from_obj, 0) > 0) {
|
||||
GET_OBJ_VAL(from_obj, 1) -= (amount =
|
||||
(GET_OBJ_VAL(to_obj, 0) - GET_OBJ_VAL(to_obj, 1)));
|
||||
if (LIMITED_DRINK_CONTAINER(from_obj)) {
|
||||
amount = MIN(DRINK_CON_NOW(from_obj), DRINK_CON_MAX(to_obj) - DRINK_CON_NOW(to_obj));
|
||||
DRINK_CON_NOW(from_obj) -= amount;
|
||||
DRINK_CON_NOW(to_obj) += amount;
|
||||
|
||||
GET_OBJ_VAL(to_obj, 1) = GET_OBJ_VAL(to_obj, 0);
|
||||
|
||||
if (GET_OBJ_VAL(from_obj, 1) < 0) { /* There was too little */
|
||||
GET_OBJ_VAL(to_obj, 1) += GET_OBJ_VAL(from_obj, 1);
|
||||
amount += GET_OBJ_VAL(from_obj, 1);
|
||||
if (DRINK_CON_NOW(from_obj) == 0) { /* It was emptied */
|
||||
name_from_drinkcon(from_obj);
|
||||
GET_OBJ_VAL(from_obj, 1) = 0;
|
||||
GET_OBJ_VAL(from_obj, 2) = 0;
|
||||
GET_OBJ_VAL(from_obj, 3) = 0;
|
||||
DRINK_CON_NOW(from_obj) = 0;
|
||||
DRINK_CON_TYPE(from_obj) = 0;
|
||||
DRINK_CON_POISON(from_obj) = 0;
|
||||
}
|
||||
}
|
||||
else {
|
||||
GET_OBJ_VAL(to_obj, 1) = GET_OBJ_VAL(to_obj, 0);
|
||||
amount = GET_OBJ_VAL(to_obj, 0);
|
||||
} else {
|
||||
amount = DRINK_CON_MAX(to_obj) - DRINK_CON_NOW(to_obj);
|
||||
DRINK_CON_NOW(to_obj) = DRINK_CON_MAX(to_obj);
|
||||
}
|
||||
/* Poisoned? */
|
||||
GET_OBJ_VAL(to_obj, 3) = (GET_OBJ_VAL(to_obj, 3) || GET_OBJ_VAL(from_obj, 3))
|
||||
;
|
||||
DRINK_CON_POISON(to_obj) = (DRINK_CON_POISON(to_obj) || DRINK_CON_POISON(from_obj));
|
||||
/* Weight change, except for unlimited. */
|
||||
if (GET_OBJ_VAL(from_obj, 0) > 0) {
|
||||
if (LIMITED_DRINK_CONTAINER(from_obj)) {
|
||||
weight_change_object(from_obj, -amount);
|
||||
}
|
||||
weight_change_object(to_obj, amount); /* Add weight */
|
||||
}
|
||||
|
||||
#undef DRINK_CON_MAX
|
||||
#undef DRINK_CON_NOW
|
||||
#undef DRINK_CON_TYPE
|
||||
#undef DRINK_CON_POISON
|
||||
|
||||
#undef LIMITED_DRINK_CONTAINER
|
||||
#undef EMPTY_DRINK_CONTAINER
|
||||
|
||||
static void wear_message(struct char_data *ch, struct obj_data *obj, int where)
|
||||
{
|
||||
const char *wear_messages[][2] = {
|
||||
|
||||
+1
-1
@@ -56,7 +56,7 @@ ACMD(do_action)
|
||||
if (!action->char_found)
|
||||
*arg = '\0';
|
||||
|
||||
if (action->char_found && argument)
|
||||
if (action->char_found)
|
||||
one_argument(argument, arg);
|
||||
else
|
||||
*arg = '\0';
|
||||
|
||||
+4
-1
@@ -2396,7 +2396,10 @@ ACMD(do_wizutil)
|
||||
act("A sudden fireball conjured from nowhere thaws $n!", FALSE, vict, 0, 0, TO_ROOM);
|
||||
break;
|
||||
case SCMD_UNAFFECT:
|
||||
if (vict->affected || AFF_FLAGS(vict)) {
|
||||
for (taeller = 0; taeller < AF_ARRAY_MAX; taeller++)
|
||||
if (AFF_FLAGS(vict)[taeller])
|
||||
break;
|
||||
if (vict->affected || taeller < AF_ARRAY_MAX) {
|
||||
while (vict->affected)
|
||||
affect_remove(vict, vict->affected);
|
||||
for(taeller=0; taeller < AF_ARRAY_MAX; taeller++)
|
||||
|
||||
+3
-3
@@ -374,9 +374,9 @@ SPECIAL(king_welmar)
|
||||
"$n proclaims 'principe dignos'."
|
||||
};
|
||||
|
||||
const char bedroom_path[] = "s33004o1c1S.";
|
||||
const char throne_path[] = "W3o3cG52211rg.";
|
||||
const char monolog_path[] = "ABCDPPPP.";
|
||||
static const char bedroom_path[] = "s33004o1c1S.";
|
||||
static const char throne_path[] = "W3o3cG52211rg.";
|
||||
static const char monolog_path[] = "ABCDPPPP.";
|
||||
|
||||
static const char *path;
|
||||
static int path_index;
|
||||
|
||||
+3
-1
@@ -246,7 +246,8 @@ void entry_memory_mtrigger(char_data *ch)
|
||||
for (actor = world[IN_ROOM(ch)].people; actor && SCRIPT_MEM(ch);
|
||||
actor = actor->next_in_room) {
|
||||
if (actor!=ch && SCRIPT_MEM(ch)) {
|
||||
for (mem = SCRIPT_MEM(ch); mem && SCRIPT_MEM(ch); mem = mem->next) {
|
||||
for (mem = SCRIPT_MEM(ch); mem && SCRIPT_MEM(ch); ) {
|
||||
struct script_memory *next_mem = mem->next;
|
||||
if (char_script_id(actor)==mem->id) {
|
||||
struct script_memory *prev;
|
||||
if (mem->cmd) command_interpreter(ch, mem->cmd);
|
||||
@@ -271,6 +272,7 @@ void entry_memory_mtrigger(char_data *ch)
|
||||
if (mem->cmd) free(mem->cmd);
|
||||
free(mem);
|
||||
}
|
||||
mem = next_mem;
|
||||
} /* for (mem =..... */
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -465,7 +465,7 @@ void find_replacement(void *go, struct script_data *sc, trig_data *trig,
|
||||
* will return the number of bags of gold.
|
||||
* Addition inspired by Jamie Nelson */
|
||||
else if (!str_cmp(var, "findmob")) {
|
||||
if (!field || !*field || !subfield || !*subfield) {
|
||||
if (!*field || !subfield || !*subfield) {
|
||||
script_log("findmob.vnum(mvnum) - illegal syntax");
|
||||
strcpy(str, "0");
|
||||
} else {
|
||||
@@ -486,7 +486,7 @@ void find_replacement(void *go, struct script_data *sc, trig_data *trig,
|
||||
}
|
||||
/* Addition inspired by Jamie Nelson. */
|
||||
else if (!str_cmp(var, "findobj")) {
|
||||
if (!field || !*field || !subfield || !*subfield) {
|
||||
if (!*field || !subfield || !*subfield) {
|
||||
script_log("findobj.vnum(ovnum) - illegal syntax");
|
||||
strcpy(str, "0");
|
||||
} else {
|
||||
|
||||
+2
-2
@@ -367,7 +367,7 @@ void parse_edit_action(int command, char *string, struct descriptor_data *d)
|
||||
s++;
|
||||
temp = *s;
|
||||
*s = '\0';
|
||||
char buf3[9];
|
||||
char buf3[13];
|
||||
sprintf(buf3, "%4d: ", (i - 1));
|
||||
strncat(buf, buf3, sizeof(buf) - strlen(buf) - 1);
|
||||
strncat(buf, t, sizeof(buf) - strlen(buf) - 1);
|
||||
@@ -421,7 +421,7 @@ void parse_edit_action(int command, char *string, struct descriptor_data *d)
|
||||
strncat(buf, *d->str, sizeof(buf) - strlen(buf) - 1);
|
||||
*s = temp;
|
||||
strncat(buf, buf2, sizeof(buf) - strlen(buf) - 1);
|
||||
if (s && *s)
|
||||
if (*s)
|
||||
strncat(buf, s, sizeof(buf) - strlen(buf) - 1);
|
||||
RECREATE(*d->str, char, strlen(buf) + 3);
|
||||
|
||||
|
||||
+2
-1
@@ -1612,8 +1612,9 @@ void nanny(struct descriptor_data *d, char *arg)
|
||||
if (load_result == CLASS_UNDEFINED) {
|
||||
write_to_output(d, "\r\nThat's not a class.\r\nClass: ");
|
||||
return;
|
||||
} else
|
||||
} else {
|
||||
GET_CLASS(d->character) = load_result;
|
||||
}
|
||||
|
||||
if (d->olc) {
|
||||
free(d->olc);
|
||||
|
||||
+15
-10
@@ -2102,20 +2102,25 @@ static void ExecuteMSDPPair( descriptor_t *apDescriptor, const char *apVariable,
|
||||
!strcmp(apDescriptor->pProtocol->pVariables[i]->pValueString, "Unknown") )
|
||||
{
|
||||
/* Store the new value if it's valid */
|
||||
char *pBuffer = alloca(VariableNameTable[i].Max+1);
|
||||
char *pBuffer = malloc(VariableNameTable[i].Max + 1);
|
||||
int j; /* Loop counter */
|
||||
|
||||
for ( j = 0; j < VariableNameTable[i].Max && *apValue != '\0'; ++apValue )
|
||||
if ( pBuffer != NULL )
|
||||
{
|
||||
if ( isprint(*apValue) )
|
||||
pBuffer[j++] = *apValue;
|
||||
}
|
||||
pBuffer[j++] = '\0';
|
||||
for ( j = 0; j < VariableNameTable[i].Max && *apValue != '\0'; ++apValue )
|
||||
{
|
||||
if ( isprint(*apValue) )
|
||||
pBuffer[j++] = *apValue;
|
||||
}
|
||||
pBuffer[j++] = '\0';
|
||||
|
||||
if ( j >= VariableNameTable[i].Min )
|
||||
{
|
||||
free(apDescriptor->pProtocol->pVariables[i]->pValueString);
|
||||
apDescriptor->pProtocol->pVariables[i]->pValueString = AllocString(pBuffer);
|
||||
if ( j >= VariableNameTable[i].Min )
|
||||
{
|
||||
free(apDescriptor->pProtocol->pVariables[i]->pValueString);
|
||||
apDescriptor->pProtocol->pVariables[i]->pValueString = AllocString(pBuffer);
|
||||
}
|
||||
|
||||
free(pBuffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -650,7 +650,7 @@ static void quest_show(struct char_data *ch, mob_vnum qm)
|
||||
send_to_char(ch, "There are no quests available here at the moment.\r\n");
|
||||
}
|
||||
|
||||
static void quest_stat(struct char_data *ch, char argument[MAX_STRING_LENGTH])
|
||||
static void quest_stat(struct char_data *ch, char *argument)
|
||||
{
|
||||
qst_rnum rnum;
|
||||
mob_rnum qmrnum;
|
||||
|
||||
+1
-1
@@ -1052,7 +1052,7 @@ static void read_line(FILE *shop_f, const char *string, void *data)
|
||||
{
|
||||
char buf[READ_SIZE];
|
||||
|
||||
if (!get_line(shop_f, buf) || !sscanf(buf, string, data)) {
|
||||
if (!get_line(shop_f, buf) || sscanf(buf, string, data) != 1) {
|
||||
log("SYSERR: Error in shop #%d, near '%s' with '%s'", SHOP_NUM(top_shop), buf, string);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
+2
-2
@@ -202,9 +202,9 @@ SPECIAL(mayor)
|
||||
{
|
||||
char actbuf[MAX_INPUT_LENGTH];
|
||||
|
||||
const char open_path[] =
|
||||
static const char open_path[] =
|
||||
"W3a3003b33000c111d0d111Oe333333Oe22c222112212111a1S.";
|
||||
const char close_path[] =
|
||||
static const char close_path[] =
|
||||
"W3a3003b33000c111d0d111CE333333CE22c222112212111a1S.";
|
||||
|
||||
static const char *path = NULL;
|
||||
|
||||
Reference in New Issue
Block a user