Pages:<< prev 1 next >>



Geomancer

GroupAdministrators
Posts1,992
JoinedJul 26, 2005
in skills.c function do_sset
find
change it to
It was creating the affects even if returned and never freeing them (could lead to crashes or odd behavior).
If you did like 'sset affect waitstate' it would crash on saving/viewing/using the spell/skill.
find
CREATE( aff, SMAUG_AFF, 1 ); if( !str_cmp( duration, "0" ) ) duration[0] = '\0'; if( !str_cmp( modifier, "0" ) ) modifier[0] = '\0'; if( ( loc % REVERSE_APPLY ) == APPLY_EXT_AFFECT ) { int modval = get_flag( modifier, a_flags, AFF_MAX ); if( modval < 0 || modval >= AFF_MAX ) { modval = 0; ch_printf( ch, "Unknown affect: %s.\r\n", modifier ); return; } snprintf( modifier, sizeof( modifier ), "%d", modval ); } else if( ( loc % REVERSE_APPLY ) == APPLY_RESISTANT || ( loc % REVERSE_APPLY ) == APPLY_IMMUNE || ( loc % REVERSE_APPLY ) == APPLY_SUSCEPTIBLE || ( loc % REVERSE_APPLY ) == APPLY_ABSORB ) { int modval = get_flag( modifier, ris_flags, RIS_MAX ); if( modval < 0 || modval >= RIS_MAX ) { modval = 0; ch_printf( ch, "Unknown resistant/immune/susceptible/absorb: %s.\r\n", modifier ); return; } snprintf( modifier, sizeof( modifier ), "%d", modval ); } if( ( loc % REVERSE_APPLY ) >= APPLY_STRIPSN && ( loc % REVERSE_APPLY ) < APPLY_STAT ) if( duration == NULL || duration[0] == '\0' ) snprintf( duration, sizeof( duration ), "%d", 0 ); aff->duration = STRALLOC( duration );
change it to
if( !str_cmp( duration, "0" ) ) duration[0] = '\0'; if( !str_cmp( modifier, "0" ) ) modifier[0] = '\0'; if( ( loc % REVERSE_APPLY ) == APPLY_EXT_AFFECT ) { int modval = get_flag( modifier, a_flags, AFF_MAX ); if( modval < 0 || modval >= AFF_MAX ) { modval = 0; ch_printf( ch, "Unknown affect: %s.\r\n", modifier ); return; } snprintf( modifier, sizeof( modifier ), "%d", modval ); } else if( ( loc % REVERSE_APPLY ) == APPLY_RESISTANT || ( loc % REVERSE_APPLY ) == APPLY_IMMUNE || ( loc % REVERSE_APPLY ) == APPLY_SUSCEPTIBLE || ( loc % REVERSE_APPLY ) == APPLY_ABSORB ) { int modval = get_flag( modifier, ris_flags, RIS_MAX ); if( modval < 0 || modval >= RIS_MAX ) { modval = 0; ch_printf( ch, "Unknown resistant/immune/susceptible/absorb: %s.\r\n", modifier ); return; } snprintf( modifier, sizeof( modifier ), "%d", modval ); } if( ( loc % REVERSE_APPLY ) >= APPLY_STRIPSN && ( loc % REVERSE_APPLY ) < APPLY_STAT ) if( duration == NULL || duration[0] == '\0' ) snprintf( duration, sizeof( duration ), "%d", 0 ); if( ( loc % REVERSE_APPLY ) == APPLY_WAITSTATE && ( modifier == NULL || modifier[0] == '\0' ) ) { send_to_char( "You can't affect waitsate by nothing.\r\n", ch ); return; } CREATE( aff, SMAUG_AFF, 1 ); aff->duration = STRALLOC( duration );
It was creating the affects even if returned and never freeing them (could lead to crashes or odd behavior).
If you did like 'sset
Pages:<< prev 1 next >>