Hello, I am having trouble with OasisOLC and adding weapon
spells/affects. I had once before gotten the answer around April/May of
1997 but alas i have lost it :( Anyway here is what i have so far.
oedit.c
/*. Build second half of menu .*/
sprintbit(GET_OBJ_WEAR(obj), wear_bits, buf1);
sprintf(buf,
"%s7%s) Wear flags : %s%s\r\n"
"%s8%s) Weight : %s%d\r\n"
"%s9%s) Cost : %s%d\r\n"
"%sA%s) Cost/Day : %s%d\r\n"
"%sB%s) Timer : %s%d\r\n"
/*. "%sC%s) Level : %s%d\r\n" -- Object level .*/
"%sD%s) Values : %s%d %d %d %d\r\n"
"%sE%s) Applies menu\r\n"
"%sF%s) Extra descriptions menu\r\n"
"%sG%s) Player affect flags menu\r\n" <--- added this
"%sH%s) Weapon spells menu\r\n" <--- added this
"%sQ%s) Quit\r\n"
"Enter choice : ",
grn, nrm, cyn, buf1,
grn, nrm, cyn, GET_OBJ_WEIGHT(obj),
grn, nrm, cyn, GET_OBJ_COST(obj),
grn, nrm, cyn, GET_OBJ_RENT(obj),
grn, nrm, cyn, GET_OBJ_TIMER(obj),
/*. grn, nrm, cyn, GET_OBJ_LEVEL(obj), -- Object level .*/
grn, nrm, cyn, GET_OBJ_VAL(obj, 0),
GET_OBJ_VAL(obj, 1),
GET_OBJ_VAL(obj, 2),
GET_OBJ_VAL(obj, 3),
grn, nrm, grn, nrm, grn, nrm, grn, nrm, grn, nrm
);
send_to_char(buf, d->character);
OLC_MODE(d) = OEDIT_MAIN_MENU;
}
Then below i added
case 'g':
case 'G':
oedit_disp_paff_menu(d);
OLC_MODE(d) = OEDIT_AFF;
break;
case 'h':
case 'H':
oedit_disp_prompt_spells_menu(d);
OLC_MODE(d) = OEDIT_PROMPT_SPELL;
break;
default:
oedit_disp_menu(d);
break;
}
return; /* end of OEDIT_MAIN_MENU */
and
/*testing malcor spells_affects*/
case OEDIT_PROMPT_SPELL:
number = atoi(arg);
if (number == 0)
break;
else if (number < 0 || number > MAX_SPELL_AFFECT)
{ oedit_disp_prompt_spells_menu(d);
return;
}
OLC_VAL(d) = number -1;
OLC_MODE(d) = OEDIT_SPELL;
oedit_disp_spells_menu(d);
return;
case OEDIT_SPELL:
number = atoi(arg);
if (number == 0)
{ OLC_OBJ(d) ->spell_affect[OLC_VAL(d)].spelltype=0;
OLC_OBJ(d) ->spell_affect[OLC_VAL(d)].level=0;
OLC_OBJ(d) ->spell_affect[OLC_VAL(d)].percentage=0;
oedit_disp_prompt_spells_menu(d);
} else if (number < 0 || number >= MAX_SPELLS) {
oedit_disp_spells_menu(d);
return;
}
else
{ OLC_OBJ(d)->spell_affect[OLC_VAL(d)].spelltype = number;
send_to_char("Level :", d->character);
OLC_MODE(d) = OEDIT_SPELLLEVEL;
}
return;
case OEDIT_SPELLLEVEL:
number = atoi(arg);
OLC_OBJ(d)->spell_affect[OLC_VAL(d)].level = number;
send_to_char("Percentage of spell going off: ", d->character);
OLC_MODE(d) = OEDIT_SPELLPER;
return;
case OEDIT_SPELLPER:
number = atoi(arg);
OLC_OBJ(d)->spell_affect[OLC_VAL(d)].percentage = number;
oedit_disp_prompt_spells_menu(d);
return;
also
/* player affects */
void oedit_disp_paff_menu(struct descriptor_data * d)
{
int i, colums = 0;
get_char_cols(d->character);
send_to_char(" [H [J", d->character);
for (i = 0; i < NUM_AFF_FLAGS; i++)
{ sprintf(buf, "%s%2d%s) %-20.20s ",
grn, i+1, nrm, affected_bits[i]
);
if(!(++colums % 2))
strcat(buf, "\r\n");
send_to_char(buf, d->character);
}
// sprintbit(AFF_FLAGS(OLC_OBJ(d)), affected_bits, buf1);
sprintbit(GET_OBJ_AFF(OLC_OBJ(d)), affected_bits, buf1);
sprintf(buf, "\r\n"
"Current flags : %s%s%s\r\n"
"Enter aff flags (0 to quit) : ",
cyn, buf1, nrm
);
send_to_char(buf, d->character);
}
/* spell types for wpn spells */
void oedit_disp_prompt_spells_menu(struct descriptor_data * d)
{
int counter;
get_char_cols(d->character);
send_to_char(" [H [J", d->character);
for (counter = 0; counter < MAX_SPELL_AFFECT; counter++) {
if (OLC_OBJ(d)->spell_affect[counter].spelltype) {
sprinttype(OLC_OBJ(d)->spell_affect[counter].spelltype, spells,
buf2);
sprintf(buf, " %s%d%s) %s at level %d, %d success rate\r\n",
grn, counter +1, nrm,
buf2, OLC_OBJ(d)->spell_affect[counter].level,
OLC_OBJ(d)->spell_affect[counter].percentage
);
send_to_char(buf, d->character);
} else {
sprintf(buf, " %s%d%s) None.\r\n", grn, counter + 1, nrm);
send_to_char(buf, d->character);
}
}
send_to_char("\r\nEnter spell apply to modify ( 0 to quit ) :",
d->character);
OLC_MODE(d) = OEDIT_PROMPT_SPELL;
}
and
case OEDIT_AFF:
if (number == 0)
break;
else if (number < 0 || number > NUM_AFFECT_FLAGS)
{ oedit_disp_prompt_paff_menu(d);
return;
}
GET_OBJ_AFF(OLC_OBJ(d)) = number;
return;
What am i missing :(
Thanks in advance
Malcor
+------------------------------------------------------------+
| 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