diff -i smaug14/src/skills.c smaug18/src/skills.c 8c8 < * Tricops and Fireblade | * --- > * Tricops, Fireblade, Edmond, Conran | * 24a25 > 26a28 > extern void remove_bexit_flag( EXIT_DATA * exit, int flag ); 31c33 < "stoponfail", "nofight", "nodispel", "randomtarget", "r2", "r3", "r4", --- > "stoponfail", "nofight", "nodispel", "randomtarget", "nomob", "r3", "r4", 41c43,48 < char *const spell_damage[] = { "none", "fire", "cold", "electricity", "energy", "acid", "poison", "drain" }; --- > char *const spell_damage[] = > #ifdef NEWSPELLS > { "none", "fire", "cold", "electricity", "energy", "acid", "poison", "drain", "holy", "unholy" }; > #else > { "none", "fire", "cold", "electricity", "energy", "acid", "poison", "drain" }; > #endif 314d320 < 320c326,333 < --- > /* > * Too many illegal pk attempts with cuffs, swats etc lately. - Luc > */ > if ( xIS_SET( ch->act, PLR_NICE ) ) > { > send_to_char( "You feel too nice to do that.\n\r", ch ); > return TRUE; > } 456c469 < OBJ_DATA *korps; --- > OBJ_INDEX_DATA *korps; 486c499 < if ( corpse->item_type != ITEM_CORPSE_PC ) --- > if ( !IS_IMMORTAL( ch ) && !IS_OBJ_STAT( corpse, ITEM_CLANCORPSE ) ) 491c504,506 < if ( obj->value[3] != 1 && obj->value[3] != 2 && obj->value[3] != 3 && obj->value[3] != 11 ) --- > if ( ( obj->value[3] != 1 > && obj->value[3] != 2 > && obj->value[3] != 3 && obj->value[3] != 11 ) || IS_OBJ_STAT( corpse, ITEM_SKINNED ) ) 495a511,527 > if ( !IS_IMMORTAL( ch ) ) > { > if ( IS_OBJ_STAT( corpse, ITEM_CLANCORPSE ) ) > { > if ( corpse->action_desc && is_name( ch->name, corpse->action_desc ) ); > else > { > send_to_char( "There is nothing you can do with this corpse.\n\r", ch ); > return; > } > } > else > { > send_to_char( "There is nothing you can do with this corpse.\n\r", ch ); > return; > } > } 501c533 < korps = create_object( get_obj_index( OBJ_VNUM_CORPSE_PC ), 0 ); --- > korps = get_obj_index( OBJ_VNUM_CORPSE_PC ); 512,514c544,545 < /* act( AT_MAGIC, "\nThe skinless corpse is dragged through the ground by a strange force...", ch, corpse, NULL, TO_CHAR); < act( AT_MAGIC, "\nThe skinless corpse is dragged through the ground by a strange force...", ch, corpse, NULL, TO_ROOM); < extract_obj( corpse ); */ --- > separate_obj( corpse ); > xSET_BIT( corpse->extra_flags, ITEM_SKINNED ); 673d703 < 741a772,775 > > > > 762c796 < if ( get_trust( ch ) > LEVEL_SUB_IMPLEM ) --- > if ( get_trust( ch ) >= LEVEL_ASCENDANT ) 786c820 < if ( get_trust( ch ) > LEVEL_SUB_IMPLEM && !str_cmp( arg1, "save" ) && !str_cmp( argument, "table" ) ) --- > if ( get_trust( ch ) >= LEVEL_ASCENDANT && !str_cmp( arg1, "save" ) && !str_cmp( argument, "table" ) ) 805c839 < if ( get_trust( ch ) > LEVEL_SUB_IMPLEM --- > if ( get_trust( ch ) >= LEVEL_ASCENDANT 1550a1585,1695 > void do_grapple( CHAR_DATA * ch, char *argument ) > { > > char arg[MAX_INPUT_LENGTH]; > CHAR_DATA *victim; > sh_int percent; > AFFECT_DATA af; > > if ( !IS_PKILL( ch ) && !IS_IMMORTAL( ch ) ) > return; > > if ( IS_NPC( ch ) && IS_AFFECTED( ch, AFF_CHARM ) ) > { > send_to_char( "You can't do that right now.\n\r", ch ); > return; > } > > if ( ch->mount ) > { > send_to_char( "You can't get close enough while mounted.\n\r", ch ); > return; > } > > if ( ( victim = who_fighting( ch ) ) == NULL ) > { > one_argument( argument, arg ); > if ( arg[0] == '\0' ) > { > act( AT_ACTION, "You move in a circle looking for someone to grapple.", ch, NULL, NULL, TO_CHAR ); > act( AT_ACTION, "$n moves in a circle looking for someone to grapple.", ch, NULL, NULL, TO_ROOM ); > return; > } > > if ( ( victim = get_char_room( ch, arg ) ) == NULL ) > { > send_to_char( "They aren't here.\n\r", ch ); > return; > } > > if ( victim == ch ) > { > send_to_char( "How can you sneak up on yourself?\n\r", ch ); > return; > } > } > > if ( IS_NPC( victim ) ) > { > send_to_char( "Stick to wrestling players.\n\r", ch ); > return; > } > > if ( IS_AFFECTED( victim, AFF_GRAPPLE ) ) > return; > > if ( is_safe( ch, victim, TRUE ) ) > { > send_to_char( "A magical force prevents you from attacking.\n\r", ch ); > return; > } > > if ( who_fighting( ch ) && who_fighting( ch ) != victim ) > { > send_to_char( "You're fighting someone else!\n\r", ch ); > return; > } > > if ( who_fighting( victim ) && who_fighting( victim ) != ch ) > { > send_to_char( "You can't get close enough.\n\r", ch ); > return; > } > > percent = LEARNED( ch, gsn_grapple ); > WAIT_STATE( ch, skill_table[gsn_grapple]->beats ); > > if ( !chance( ch, percent ) ) > { > send_to_char( "You lost your balance.\n\r", ch ); > act( AT_ACTION, "$n tries to grapple you but can't get close enough.", ch, NULL, victim, TO_VICT ); > /* > act( AT_ACTION, "$n tries to grapple with $N.", ch, NULL, victim, TO_NOTVICT ); > */ > learn_from_failure( ch, gsn_grapple ); > check_illegal_pk( ch, victim ); > return; > } > > af.type = gsn_grapple; > af.duration = 2; > af.location = APPLY_DEX; > af.modifier = -2; > af.bitvector = meb( AFF_GRAPPLE ); > affect_to_char( victim, &af ); > af.type = gsn_grapple; > af.duration = 2; > af.location = APPLY_DEX; > af.modifier = -2; > af.bitvector = meb( AFF_GRAPPLE ); > affect_to_char( ch, &af ); > ch_printf( ch, "You manage to grab hold of %s!\n\r", capitalize( victim->name ) ); > act( AT_ACTION, "$n grabs hold of you!", ch, NULL, victim, TO_VICT ); > act( AT_ACTION, "$n begins grappling with $N!", ch, NULL, victim, TO_NOTVICT ); > learn_from_success( ch, gsn_grapple ); > check_illegal_pk( ch, victim ); > if ( !ch->fighting && victim->in_room == ch->in_room ) > set_fighting( ch, victim ); > if ( !victim->fighting && ch->in_room == victim->in_room ) > set_fighting( victim, ch ); > return; > } 1750c1895 < if ( can_use_skill( ch, percent, gsn_detrap ) ) --- > if ( !can_use_skill( ch, percent, gsn_detrap ) ) 1877,1879c2022,2033 < REMOVE_BIT( pexit->exit_info, EX_CLOSED ); < send_to_char( "You dig open a passageway!\n\r", ch ); < act( AT_PLAIN, "$n digs open a passageway!", ch, NULL, NULL, TO_ROOM ); --- > if ( !IS_SET( pexit->exit_info, EX_ISDOOR ) ) > { > remove_bexit_flag( pexit, EX_CLOSED ); > send_to_char( "You dig open a passageway!\n\r", ch ); > act( AT_PLAIN, "$n digs open a passageway!", ch, NULL, NULL, TO_ROOM ); > } > else > { > REMOVE_BIT( pexit->exit_info, EX_DIG ); > send_to_char( "You uncover a doorway!\n\r", ch ); > act( AT_PLAIN, "$n uncovers a doorway!", ch, NULL, NULL, TO_ROOM ); > } 2095c2249 < if ( IS_SET( ch->in_room->room_flags, ROOM_SAFE ) ) --- > if ( xIS_SET( ch->in_room->room_flags, ROOM_SAFE ) ) 2120c2274 < if ( xIS_SET( victim->act, ACT_PACIFIST ) ) /* Gorog */ --- > if ( IS_NPC( victim ) && xIS_SET( victim->act, ACT_PACIFIST ) ) /* Gorog */ 2143c2297,2298 < if ( victim->position == POS_FIGHTING || !can_use_skill( ch, percent, gsn_steal ) ) --- > if ( victim->position == POS_FIGHTING > || !can_use_skill( ch, percent, gsn_steal ) || ( IS_NPC( victim ) && xIS_SET( victim->act, ACT_NOSTEAL ) ) ) 2253c2408 < void do_backstab( CHAR_DATA * ch, char *argument ) --- > void do_pounce( CHAR_DATA * ch, char *argument ) 2276c2431 < send_to_char( "Backstab whom?\n\r", ch ); --- > send_to_char( "Pounce on whom?\n\r", ch ); 2288c2443 < send_to_char( "How can you sneak up on yourself?\n\r", ch ); --- > send_to_char( "Pounce on yourself?\n\r", ch ); 2295c2450,2531 < if ( !IS_NPC( ch ) && !IS_NPC( victim ) && xIS_SET( ch->act, PLR_NICE ) ) --- > if ( ( obj = get_eq_char( ch, WEAR_WIELD ) ) == NULL > || ( obj->value[3] != 1 > && obj->value[3] != 2 > && obj->value[3] != 3 && obj->value[3] != 5 && obj->value[3] != 10 && obj->value[3] != 11 ) ) > { > send_to_char( "You are not wielding an appropriate weapon type to effectively pounce.\n\r", ch ); > return; > } > > if ( victim->fighting ) > { > send_to_char( "You cannot pounce on someone who is in combat.\n\r", ch ); > return; > } > > if ( victim->hit < victim->max_hit && IS_AWAKE( victim ) ) > { > act( AT_PLAIN, "$N is hurt and suspicious ... you can't sneak up.", ch, NULL, victim, TO_CHAR ); > return; > } > > percent = number_percent( ) - ( get_curr_lck( ch ) - 14 ) + ( get_curr_lck( victim ) - 13 ); > > check_attacker( ch, victim ); > > WAIT_STATE( ch, skill_table[gsn_pounce]->beats ); > > if ( !IS_AWAKE( victim ) || can_use_skill( ch, percent, gsn_pounce ) ) > { > learn_from_success( ch, gsn_pounce ); > global_retcode = multi_hit( ch, victim, gsn_pounce ); > check_illegal_pk( ch, victim ); > } > else > { > learn_from_failure( ch, gsn_pounce ); > global_retcode = damage( ch, victim, 0, gsn_pounce ); > check_illegal_pk( ch, victim ); > } > return; > } > > void do_backstab( CHAR_DATA * ch, char *argument ) > { > char arg[MAX_INPUT_LENGTH]; > CHAR_DATA *victim; > OBJ_DATA *obj; > int percent; > > if ( IS_NPC( ch ) && IS_AFFECTED( ch, AFF_CHARM ) ) > { > send_to_char( "You can't do that right now.\n\r", ch ); > return; > } > > one_argument( argument, arg ); > > if ( ch->mount ) > { > send_to_char( "You can't get close enough while mounted.\n\r", ch ); > return; > } > > if ( arg[0] == '\0' ) > { > send_to_char( "Backstab whom?\n\r", ch ); > return; > } > > if ( ( victim = get_char_room( ch, arg ) ) == NULL ) > { > send_to_char( "They aren't here.\n\r", ch ); > return; > } > > if ( victim == ch ) > { > send_to_char( "How can you sneak up on yourself?\n\r", ch ); > return; > } > > if ( xIS_SET( ch->act, PLR_NICE ) && !IS_NPC( victim ) ) 2297c2533 < send_to_char( "You are too nice to do that.\n\r", ch ); --- > send_to_char( "You feel too nice to do that!\n\r", ch ); 2300a2537,2540 > if ( is_safe( ch, victim, TRUE ) ) > return; > > 2448a2689,2896 > void do_meditate( CHAR_DATA * ch, char *argument ) > { > char *arg; > int percent; > int managain = ( ch->class == CLASS_DRUID ? 0 : 22 ); > > switch ( ch->substate ) > { > default: > if ( IS_NPC( ch ) || IS_AFFECTED( ch, AFF_CHARM ) ) > { > send_to_char( "You can't concentrate enough for that.\n\r", ch ); > return; > } > send_to_char_color( "&BYou enter into a meditative state, hoping to collect mana from the cosmos.\n\r", > ch ); > add_timer( ch, TIMER_DO_FUN, UMAX( 2, ( skill_table[gsn_meditate]->beats / 8 ) ), do_meditate, 1 ); > ch->alloc_ptr = str_dup( argument ); > return; > > case 1: > if ( !ch->alloc_ptr ) > { > send_to_char_color( "&BYour meditation was interrupted.\n\r", ch ); > bug( "do_meditate: alloc_ptr NULL or not numeric", 0 ); > return; > } > arg = str_dup( ch->alloc_ptr ); > DISPOSE( ch->alloc_ptr ); > break; > > case SUB_TIMER_DO_ABORT: > ch->substate = SUB_NONE; > send_to_char_color( "&BYou stop meditating.\n\r", ch ); > DISPOSE( ch->alloc_ptr ); > return; > } > > switch ( ch->in_room->sector_type ) > { > case SECT_INSIDE: > case SECT_DUNNO: > case SECT_UNDERGROUND: > default: > break; > case SECT_FIELD: > case SECT_HILLS: > case SECT_FOREST: > case SECT_MOUNTAIN: > if ( ch->class == CLASS_DRUID ) > managain = 24; > else > managain += 2; > break; > case SECT_WATER_SWIM: > case SECT_WATER_NOSWIM: > case SECT_UNDERWATER: > case SECT_OCEANFLOOR: > if ( ch->race == RACE_SEA_ELF ) > managain += 3; > else if ( !IS_AFFECTED( ch, AFF_AQUA_BREATH ) ) > managain -= 2; > break; > case SECT_AIR: > if ( ch->race == RACE_PIXIE ) > managain += 3; > else if ( !IS_AFFECTED( ch, AFF_FLYING ) ) > managain -= 2; > break; > case SECT_DESERT: > case SECT_LAVA: > case SECT_SWAMP: > managain -= 2; > break; > } > > percent = UMAX( 1, number_percent( ) + get_curr_wis( ch ) - 10 ); > if ( can_use_skill( ch, percent, gsn_meditate ) ) > { > learn_from_success( ch, gsn_meditate ); > send_to_char_color( "&BYou meditate peacefully, collecting mana from the cosmos.\n\r", ch ); > ch->mana = UMIN( ch->max_mana, ch->mana + managain ); > } > else > { > send_to_char_color( "&BYou spend several minutes in deep concentration, but fail to collect any mana.\n\r", > ch ); > learn_from_failure( ch, gsn_meditate ); > } > if ( ch->mana < ch->max_mana ) > { > TIMER *timer; > > timer = get_timerptr( ch, TIMER_DO_FUN ); > timer->count += UMAX( 2, ( skill_table[gsn_meditate]->beats / 8 ) ); > ch->alloc_ptr = str_dup( arg ); > } > else > { > send_to_char_color( "&BYou complete your meditations.\n\r", ch ); > ch->substate = SUB_NONE; > } > return; > } > > void do_trance( CHAR_DATA * ch, char *argument ) > { > char *arg; > int percent; > int managain = ( ch->class == CLASS_DRUID ? 0 : 50 ); > > switch ( ch->substate ) > { > default: > if ( IS_NPC( ch ) || IS_AFFECTED( ch, AFF_CHARM ) ) > { > send_to_char( "You can't concentrate enough for that.\n\r", ch ); > return; > } > send_to_char_color( "&BYou enter a peaceful trance, collecting mana from the cosmos.\n\r", ch ); > add_timer( ch, TIMER_DO_FUN, UMAX( 2, ( skill_table[gsn_trance]->beats / 8 ) ), do_trance, 1 ); > ch->alloc_ptr = str_dup( argument ); > return; > > case 1: > if ( !ch->alloc_ptr ) > { > send_to_char_color( "&BYour trance was interrupted.\n\r", ch ); > bug( "do_trance: alloc_ptr NULL or not numeric", 0 ); > return; > } > arg = str_dup( ch->alloc_ptr ); > DISPOSE( ch->alloc_ptr ); > break; > > case SUB_TIMER_DO_ABORT: > ch->substate = SUB_NONE; > send_to_char_color( "&BYou come out of your trance.\n\r", ch ); > DISPOSE( ch->alloc_ptr ); > return; > } > > switch ( ch->in_room->sector_type ) > { > case SECT_DUNNO: > case SECT_UNDERGROUND: > default: > break; > case SECT_INSIDE: > case SECT_FIELD: > case SECT_HILLS: > case SECT_FOREST: > case SECT_MOUNTAIN: > if ( ch->class == CLASS_DRUID ) > managain = 50; > else > managain += 2; > break; > case SECT_WATER_SWIM: > case SECT_WATER_NOSWIM: > case SECT_UNDERWATER: > case SECT_OCEANFLOOR: > if ( ch->race == RACE_SEA_ELF ) > managain += 3; > else if ( !IS_AFFECTED( ch, AFF_AQUA_BREATH ) ) > managain -= 2; > break; > case SECT_AIR: > if ( ch->race == RACE_PIXIE ) > managain += 3; > else if ( !IS_AFFECTED( ch, AFF_FLYING ) ) > managain -= 2; > break; > case SECT_DESERT: > case SECT_LAVA: > case SECT_SWAMP: > managain -= 2; > break; > } > > > percent = UMAX( 1, number_percent( ) + get_curr_wis( ch ) - 10 ); > if ( can_use_skill( ch, percent, gsn_trance ) ) > { > learn_from_success( ch, gsn_trance ); > send_to_char_color( "&BIn your peaceful trance, you collect mana from the cosmos.\n\r", ch ); > ch->mana = UMIN( ch->max_mana, ch->mana + managain ); > } > else > { > send_to_char_color( "&BYou spend several minutes in a deep trance, but fail to collect any mana.\n\r", ch ); > learn_from_failure( ch, gsn_trance ); > } > if ( ch->mana < ch->max_mana ) > { > TIMER *timer; > > timer = get_timerptr( ch, TIMER_DO_FUN ); > timer->count += UMAX( 2, ( skill_table[gsn_trance]->beats / 8 ) ); > ch->alloc_ptr = str_dup( arg ); > } > else > { > send_to_char_color( "&BYou complete your trance.\n\r", ch ); > ch->substate = SUB_NONE; > } > return; > } 2591a3040 > 2830a3280 > damage( ch, ch, ch->level / 5, gsn_bloodlet ); 2844a3295 > sh_int temphit; 2891a3343,3348 > temphit = ch->hit; > ch->hit += 1 + ch->level / 5; > if ( ch->hit > ch->max_hit ) > ch->hit = ch->max_hit; > if ( ch->hit < temphit ) > ch->hit = temphit; 2915a3373,3374 > > char buf[MAX_STRING_LENGTH]; 2951c3410,3413 < if ( !IS_NPC( victim ) && CAN_PKILL( victim ) && !IS_OBJ_STAT( obj, ITEM_LOYAL ) ) --- > if ( !IS_NPC( victim ) && CAN_PKILL( victim ) ) > /* > * && !IS_OBJ_STAT( obj, ITEM_LOYAL ) ) -- why is this here? > */ 2954c3416,3418 < obj->value[5] = victim->level; --- > sprintf( buf, "%s %s", ch->name, victim->name ); > STRFREE( obj->action_desc ); > obj->action_desc = STRALLOC( buf ); 2956a3421 > { 2957a3423,3431 > STRFREE( obj->action_desc ); /* Rather do this kludgy stuff than try to test all circumstances */ > obj->action_desc = STRALLOC( "" ); > } > else if ( in_arena( victim ) ) > { > obj_to_char( obj, victim ); > STRFREE( obj->action_desc ); > obj->action_desc = STRALLOC( "" ); > } 2960d3433 < 3052a3526,3580 > > /* Shargate, May 2002 */ > void do_cleave( CHAR_DATA * ch, char *argument ) > { > CHAR_DATA *victim; > OBJ_DATA *obj; > int dam = 0; > > if ( IS_NPC( ch ) && IS_AFFECTED( ch, AFF_CHARM ) ) > { > send_to_char( "A clear mind is required to use that skill.\n\r", ch ); > return; > } > if ( !IS_NPC( ch ) && ch->level < skill_table[gsn_cleave]->skill_level[ch->class] ) > { > send_to_char( "You can't seem to summon the strength.\n\r", ch ); > return; > } > if ( ( obj = get_eq_char( ch, WEAR_WIELD ) ) == NULL > || ( obj->value[3] != 1 && obj->value[3] != 3 && obj->value[3] != 5 ) ) > { > send_to_char( "You need a slashing weapon.\n\r", ch ); > return; > } > if ( ( victim = who_fighting( ch ) ) == NULL ) > { > send_to_char( "You aren't fighting anyone.\n\r", ch ); > return; > } > if ( can_use_skill( ch, number_percent( ), gsn_cleave ) ) > { > WAIT_STATE( ch, skill_table[gsn_cleave]->beats ); > if ( number_percent( ) <= 20 ) > { > set_char_color( AT_WHITE, ch ); > send_to_char( "You deal a devastating blow!\n\r", ch ); > dam = ( number_range( 11, 22 ) * get_curr_str( ch ) ) + 30; > WAIT_STATE( victim, 2 ); > } > else > { > dam = ( number_range( 9, 18 ) * get_curr_str( ch ) ) + 30; > } > learn_from_success( ch, gsn_cleave ); > global_retcode = damage( ch, victim, dam, gsn_cleave ); > } > else > { > learn_from_failure( ch, gsn_cleave ); > global_retcode = damage( ch, victim, 0, gsn_cleave ); > } > return; > } > > 3083c3611 < if ( IS_PKILL( ch ) && ch->pcdata->condition[COND_BLOODTHIRST] > 22 ) --- > if ( IS_PKILL( ch ) ) 3089,3094c3617,3622 < || IS_SET( victim->in_room->room_flags, ROOM_PRIVATE ) < || IS_SET( victim->in_room->room_flags, ROOM_SOLITARY ) < || IS_SET( victim->in_room->room_flags, ROOM_NO_ASTRAL ) < || IS_SET( victim->in_room->room_flags, ROOM_DEATH ) < || IS_SET( victim->in_room->room_flags, ROOM_PROTOTYPE ) < || IS_SET( ch->in_room->room_flags, ROOM_NO_RECALL ) --- > || xIS_SET( victim->in_room->room_flags, ROOM_PRIVATE ) > || xIS_SET( victim->in_room->room_flags, ROOM_SOLITARY ) > || xIS_SET( victim->in_room->room_flags, ROOM_NO_ASTRAL ) > || xIS_SET( victim->in_room->room_flags, ROOM_DEATH ) > || xIS_SET( victim->in_room->room_flags, ROOM_PROTOTYPE ) > || xIS_SET( ch->in_room->room_flags, ROOM_NO_RECALL ) 3107c3635,3637 < * Subtract 22 extra bp for mist walk from 0500 to 2100 SB --- > * Subtract 22 extra bp for mist walk from 0500 to 2100 SB > * if ( time_info.hour < 21 && time_info.hour > 5 && !IS_NPC(ch) ) > * gain_condition( ch, COND_BLOODTHIRST, - 22 ); 3109,3110d3638 < if ( time_info.hour < 21 && time_info.hour > 5 && !IS_NPC( ch ) ) < gain_condition( ch, COND_BLOODTHIRST, -22 ); 3428c3956 < if ( !location ) --- > if ( !location && !IS_NPC( ch ) ) /* Obscure crash bug */ 3443c3971 < if ( IS_SET( ch->in_room->room_flags, ROOM_NO_RECALL ) ) --- > if ( xIS_SET( ch->in_room->room_flags, ROOM_NO_RECALL ) ) 3615c4143,4144 < --- > if ( ch->stance > STANCE_NONE ) > do_stance( ch, "" ); 3689a4219,4224 > /* > * Put support in for bonus to parry. If you have your stance 75% of the > * * way to GM, then you get the full parry benefit/penalty otherwise you only > * * get half of it. SHADDAI > */ > 3692,3694d4226 < /* < * Tuan was here. :) < */ 3695a4228,4231 > if ( victim->pIndexData->stances[victim->stance] > ( STANCE_GRAND_MASTER * .75 ) ) > chances += stance_index[victim->stance].parry; > else > chances += ( stance_index[victim->stance].parry / 2 ); 3701a4238,4241 > if ( victim->pcdata->stances[victim->stance] > ( STANCE_GRAND_MASTER * .75 ) ) > chances += stance_index[victim->stance].parry; > else > chances += ( stance_index[victim->stance].parry / 2 ); 3740a4281,4285 > /* > * Support for stances have been added. If you have your stance at least > * * half-way to Grand-Master you get the dodge benefit, other-wise you get > * * half of the benefit. SHADDAI > */ 3741a4287 > { 3742a4289,4293 > if ( victim->pIndexData->stances[victim->stance] > ( STANCE_GRAND_MASTER / 2 ) ) > chances += stance_index[victim->stance].dodge; > else > chances += ( stance_index[victim->stance].dodge / 2 ); > } 3743a4295 > { 3744a4297,4301 > if ( victim->pcdata->stances[ch->stance] > ( STANCE_GRAND_MASTER / 2 ) ) > chances += stance_index[victim->stance].dodge; > else > chances += ( stance_index[victim->stance].dodge / 2 ); > } 3770a4328 > int mod_tumble_by; 3775a4334,4337 > if ( IS_PKILL( victim ) ) > mod_tumble_by = sysdata.tumble_pk; > else > mod_tumble_by = sysdata.tumble_mod; 3779c4341 < chances = ( int ) ( LEARNED( victim, gsn_tumble ) / sysdata.tumble_mod + ( get_curr_dex( victim ) - 13 ) ); --- > chances = ( int ) ( LEARNED( victim, gsn_tumble ) / mod_tumble_by + ( get_curr_dex( victim ) - 13 ) ); 4043c4605 < --- > WAIT_STATE( ch, skill_table[gsn_scribe]->beats ); 4176c4738 < --- > WAIT_STATE( ch, skill_table[gsn_brew]->beats ); 4357c4919 < if ( IS_SET( ch->in_room->room_flags, ROOM_SAFE ) ) --- > if ( xIS_SET( ch->in_room->room_flags, ROOM_SAFE ) ) 4507c5069,5072 < send_to_char( ch->in_room->name, ch ); --- > if ( xIS_SET( ch->in_room->room_flags, ROOM_COLOR ) ) > send_to_char_color( ch->in_room->name, ch ); > else > send_to_char( ch->in_room->name, ch ); 4689c5254 < if ( IS_SET( ch->in_room->room_flags, ROOM_SAFE ) ) --- > if ( xIS_SET( ch->in_room->room_flags, ROOM_SAFE ) ) 4843c5408 < if ( IS_SET( ch->in_room->room_flags, ROOM_PRIVATE ) || IS_SET( ch->in_room->room_flags, ROOM_SOLITARY ) ) --- > if ( xIS_SET( ch->in_room->room_flags, ROOM_PRIVATE ) || xIS_SET( ch->in_room->room_flags, ROOM_SOLITARY ) ) 4901c5466 < if ( IS_SET( vch->in_room->room_flags, ROOM_NOMISSILE ) ) --- > if ( xIS_SET( vch->in_room->room_flags, ROOM_NOMISSILE ) ) 4928c5493 < send_to_char( "Your too nice to do that!\n\r", ch ); --- > send_to_char( "You're too nice to do that!\n\r", ch ); 5101,5104c5666,5667 < act( color, "Your $t falls harmlessly to the ground to the $T.", < ch, myobj( projectile ), dir_name[dir], TO_CHAR ); < act( color, "$p flies in from $T and falls harmlessly to the ground here.", < ch, projectile, dtxt, TO_ROOM ); --- > act( color, "Your $t falls harmlessly to the $T.", ch, myobj( projectile ), dir_name[dir], TO_CHAR ); > act( color, "$p flies in from $T and falls harmlessly to the ground.", ch, projectile, dtxt, TO_ROOM ); 5123c5686 < act( color, "Your $t hits a wall and bounces harmlessly to the ground to the $T.", --- > act( color, "Your $t hits a wall and bounces harmlessly to the $T.", 5125,5126c5688 < act( color, "$p strikes the $Tsern wall and falls harmlessly to the ground.", < ch, projectile, dir_name[dir], TO_ROOM ); --- > act( color, "$p falls harmlessly to the ground.", ch, projectile, dir_name[dir], TO_ROOM ); 5136c5698 < act( color, "$t strikes the $Tsern wall and falls harmlessly to the ground.", --- > act( color, "$t strikes the $Tern wall and falls harmlessly to the ground.", 5176c5738 < if ( IS_SET( ch->in_room->room_flags, ROOM_SAFE ) ) --- > if ( xIS_SET( ch->in_room->room_flags, ROOM_SAFE ) ) 5250c5812 < if ( IS_SET( ch->in_room->room_flags, ROOM_SAFE ) ) --- > if ( xIS_SET( ch->in_room->room_flags, ROOM_SAFE ) ) 5394c5956 < if ( ( pMobIndex = get_mob_index( ( sh_int ) - ( corpse->value[2] ) ) ) == NULL ) --- > if ( ( pMobIndex = get_mob_index( -( corpse->value[2] ) ) ) == NULL ) 5649a6212,6214 > if ( skill_table[gsn]->guild == 99 && !IS_NPC( ch ) && !IS_SET( ch->pcdata->flags, PCFLAG_DEADLY ) ) > check = FALSE; > 5723,5724c6288,6289 < act( AT_MAGIC, "$n overcooks a $p.", ch, food, NULL, TO_ROOM ); < act( AT_MAGIC, "You overcook a $p.", ch, food, NULL, TO_CHAR ); --- > act( AT_MAGIC, "$n overcooks $p.", ch, food, NULL, TO_ROOM ); > act( AT_MAGIC, "You overcook $p.", ch, food, NULL, TO_CHAR ); 5736,5737c6301,6302 < act( AT_MAGIC, "$n roasts a $p.", ch, food, NULL, TO_ROOM ); < act( AT_MAGIC, "You roast a $p.", ch, food, NULL, TO_CHAR ); --- > act( AT_MAGIC, "$n roasts $p.", ch, food, NULL, TO_ROOM ); > act( AT_MAGIC, "You roast $p.", ch, food, NULL, TO_CHAR );