olleg
06.10.2004, 13:07
Вот кусочек кода из br10_03 spell_parser.c
int spell_use_success(struct char_data *ch, struct char_data *victim, int casting_type, int spellnum)
{int prob = 100;
if (IS_IMMORTAL(ch) || GET_GOD_FLAG(ch, GF_GODSLIKE))
return (TRUE);
switch (casting_type)
{case SAVING_SPELL:
case SAVING_ROD:
prob = int_app[GET_REAL_WIS(ch)].spell_success +
GET_CAST_SUCCESS(ch);
Поле spell_success есть в массивах структур int_app и wis_app. Но в int_app это поле везде нулевое, а в wis_app похоже несет отведенный смысл. Здесь берестся мудрость, но почему-то применяется к массиву от интелекта, у которого эти поля нулевые. Если это баг, то вот патч:
*** spell_parser.c.orig 2004-10-06 12:44:17.804049489 +0400
--- spell_parser.c 2004-10-06 12:44:39.432382087 +0400
***************
*** 2445,2451 ****
switch (casting_type)
{case SAVING_SPELL:
case SAVING_ROD:
! prob = int_app[GET_REAL_WIS(ch)].spell_success +
GET_CAST_SUCCESS(ch);
if ((IS_MAGE(ch) && ch->in_room != NOWHERE && ROOM_FLAGGED(IN_ROOM(ch),ROOM_MAGE)) ||
--- 2445,2451 ----
switch (casting_type)
{case SAVING_SPELL:
case SAVING_ROD:
! prob = wis_app[GET_REAL_WIS(ch)].spell_success +
GET_CAST_SUCCESS(ch);
if ((IS_MAGE(ch) && ch->in_room != NOWHERE && ROOM_FLAGGED(IN_ROOM(ch),ROOM_MAGE)) ||
Всю славу Горилюбу.
int spell_use_success(struct char_data *ch, struct char_data *victim, int casting_type, int spellnum)
{int prob = 100;
if (IS_IMMORTAL(ch) || GET_GOD_FLAG(ch, GF_GODSLIKE))
return (TRUE);
switch (casting_type)
{case SAVING_SPELL:
case SAVING_ROD:
prob = int_app[GET_REAL_WIS(ch)].spell_success +
GET_CAST_SUCCESS(ch);
Поле spell_success есть в массивах структур int_app и wis_app. Но в int_app это поле везде нулевое, а в wis_app похоже несет отведенный смысл. Здесь берестся мудрость, но почему-то применяется к массиву от интелекта, у которого эти поля нулевые. Если это баг, то вот патч:
*** spell_parser.c.orig 2004-10-06 12:44:17.804049489 +0400
--- spell_parser.c 2004-10-06 12:44:39.432382087 +0400
***************
*** 2445,2451 ****
switch (casting_type)
{case SAVING_SPELL:
case SAVING_ROD:
! prob = int_app[GET_REAL_WIS(ch)].spell_success +
GET_CAST_SUCCESS(ch);
if ((IS_MAGE(ch) && ch->in_room != NOWHERE && ROOM_FLAGGED(IN_ROOM(ch),ROOM_MAGE)) ||
--- 2445,2451 ----
switch (casting_type)
{case SAVING_SPELL:
case SAVING_ROD:
! prob = wis_app[GET_REAL_WIS(ch)].spell_success +
GET_CAST_SUCCESS(ch);
if ((IS_MAGE(ch) && ch->in_room != NOWHERE && ROOM_FLAGGED(IN_ROOM(ch),ROOM_MAGE)) ||
Всю славу Горилюбу.