/**************************************************************************** * _______ _ ______ _______ _______ ______ * * ( ____ \( \ ( __ \ |\ /|( ___ )( )|\ /|( __ \ * * | ( \/| ( | ( \ )| ) ( || ( ) || () () || ) ( || ( \ ) * * | (__ | | | | ) || (___) || (___) || || || || | | || | ) | * * | __) | | | | | || ___ || ___ || |(_)| || | | || | | | * * | ( | | | | ) || ( ) || ( ) || | | || | | || | ) | * * | (____/\| (____/\| (__/ )| ) ( || ) ( || ) ( || (___) || (__/ ) * * (_______/(_______/(______/ |/ \||/ \||/ \|(_______)(______/ * * +-+-+-+ +-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+ * * |T|h|e| |O|a|k|l|a|n|d| |C|h|r|o|n|i|c|l|e|s| * * +-+-+-+ +-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+ * * ------------------------------------------------------------------------- * * EldhaMUD code (C) 2003-2005 by Robert Powell (Tommi) * * EldhaMUD Team: Celest, Altere and Krelowyn * * ------------------------------------------------------------------------- * * * ****************************************************************************/ #include "./Headers/mud.h" /* Fish Defines */ #define OBJ_VNUM_CRESS_FISH 150 #define OBJ_VNUM_SPUTTER_FISH 151 #define OBJ_VNUM_DARG_FISH 152 #define OBJ_VNUM_EMERALD_FISH 153 #define OBJ_VNUM_ELL_FISH 154 #define OBJ_VNUM_BOG_WORM 155 #define OBJ_VNUM_ROSE_MAGGOT 156 /* void do_bait( CHAR_DATA * ch, char *argument ) { char arg[MAX_INPUT_LENGTH]; OBJ_DATA *obj_pole; OBJ_DATA *bait; if( arg[0] == '\0' ) { if( ( bait = get_objtype_carry( ch, ITEM_FISHING_BAIT ) ) == NULL ) { send_to_char( "You are not carrying any bait.\n\r", ch ); return; } } else { if( ( bait = get_obj_carry( ch, arg ) ) == NULL ) { send_to_char( "You are not carrying that bait.\n\r", ch ); return; } } if( ( obj_pole = get_eq_char( ch, WEAR_HOLD ) ) == NULL || obj_pole->item_type != ITEM_FISHING_POLE ) { send_to_char( "You need to be holding your fishing pole if you want to bait it.\n\r", ch ); return; } if( obj_pole->value[0] > 0 ) { send_to_char( "You already baited your hook.\n\r", ch ); return; } obj_pole->value[0] = 1; act( AT_MAGIC, "$n places bait on $s fishing pole.", ch, NULL, NULL, TO_ROOM ); act( AT_MAGIC, "You place bait on your fishing pole.", ch, NULL, NULL, TO_CHAR ); separate_obj( bait ); if( bait->serial == cur_obj ) global_objcode = rOBJ_USED; extract_obj( bait ); return; return; }*/ void do_cast_line( CHAR_DATA * ch, char *argument ) { return; } void do_wind_line( CHAR_DATA * ch, char *argument ) { return; } void do_cast_net( CHAR_DATA * ch, char *argument ) { return; } void do_haul_net( CHAR_DATA * ch, char *argument ) { return; } void do_gut_fish( CHAR_DATA * ch, char *argument ) { return; } void do_smoke_fish( CHAR_DATA * ch, char *argument ) { return; } void do_dry_fish( CHAR_DATA * ch, char *argument ) { return; } /* fishing aug 2005 intalled by tommi code by qidixan void do_fish( CHAR_DATA *ch, char *argument ) { OBJ_DATA *obj_pole; if( IS_NPC( ch ) && IS_AFFECTED( ch, AFF_CHARM ) ) { send_to_char( "You can't do that right now.\n\r", ch ); return; } if( !IS_NPC( ch ) && ch->level < skill_table[gsn_fish]->skill_level[ch->class] ) { send_to_char( "You don't know how to fish.\n\r", ch ); return; } if( ch->fighting ) { send_to_char( "Wait until you are finished fighting.\n\r", ch ); return; } if( ( obj_pole = get_eq_char( ch, WEAR_HOLD ) ) == NULL || obj_pole->item_type != ITEM_FISHING_POLE ) { send_to_char( "You need a pole for that!\n\r", ch ); return; } if( obj_pole->value[0] < 1 ) //check for baited - item value set { send_to_char( "You need to bait your pole first.\n\r", ch ); return; } if( !ch->in_room ) { send_to_char( "You are floating in space.\n\r", ch ); return; } switch( ch->in_room->sector_type ) { //Valid cases - in water but not underwater. case SECT_WATER_SWIM: case SECT_WATER_NOSWIM: //boat/flight check... if( !IS_AFFECTED( ch, AFF_FLYING ) && !IS_AFFECTED( ch, AFF_FLOATING) ) { OBJ_DATA *obj; for( obj = ch->first_carrying; obj; obj = obj->next_content ) if( obj->item_type == ITEM_BOAT ) break; if( !obj ) { send_to_char( "You can't fish while you are surrounded by water.\n\r", ch ); return; } } break; //Invalid cases case SECT_UNDERWATER: case SECT_OCEANFLOOR: send_to_char( "You cannot fish while underwater!\n\r", ch ); return; default: send_to_char( "You need to be near water for that!\n\r", ch ); return; } //Ok, everything is in order - fishing . . . if( number_percent() < LEARNED( ch, gsn_fish ) ) { //success int caught = number_percent() + obj_pole->value[1]; int skill = 2 * number_percent() + LEARNED( ch, gsn_fish ); OBJ_DATA *fish_caught; obj_pole->value[0] = 0; //remove bait obj_pole->value[1] = 0; //remove bait_type act( AT_MAGIC, "$n has a successful time fishing.", ch, NULL, NULL, TO_ROOM ); if( caught < 51 ) //50% { //load common fish_caught = create_object( get_obj_index( OBJ_VNUM_CRESS_FISH ), 0 ); //Determine how many are caught. skill /= 45; skill = (skill>0?skill:1); fish_caught->count = skill; fish_caught->pIndexData->count += (skill - 1); numobjsloaded += (skill - 1); act( AT_MAGIC, "You catch some cress fish.", ch, NULL, NULL, TO_CHAR ); } else if( caught < 76 ) //25% { //load less common fish_caught = create_object( get_obj_index(OBJ_VNUM_SPUTTER_FISH), 0 ); //Determine how many are caught. skill /= 55; skill = (skill>0?skill:1); fish_caught->count = skill; fish_caught->pIndexData->count += (skill - 1); numobjsloaded += (skill - 1); act( AT_MAGIC, "You catch some sputter fish.", ch, NULL, NULL, TO_CHAR ); } else if( caught < 91 ) //15% { //load uncommon fish_caught = create_object( get_obj_index( OBJ_VNUM_DARG_FISH ), 0 ); //Determine how many are caught. skill /= 65; skill = (skill>0?skill:1); fish_caught->count = skill; fish_caught->pIndexData->count += (skill - 1); numobjsloaded += (skill - 1); act( AT_MAGIC, "You catch some darg fish.", ch, NULL, NULL, TO_CHAR ); } else if( caught < 98 ) //7% { //load rare fish_caught = create_object( get_obj_index( OBJ_VNUM_EMERALD_FISH ), 0 ); //Determine how many are caught. skill /= 75; skill = (skill>0?skill:1); fish_caught->count = skill; fish_caught->pIndexData->count += (skill - 1); numobjsloaded += (skill - 1); act( AT_MAGIC, "You catch some emerald fish.", ch, NULL, NULL, TO_CHAR ); } else //3% { //load ultra rare fish_caught = create_object( get_obj_index( OBJ_VNUM_ELL_FISH ), 0 ); //Determine how many are caught. skill /= 85; skill = (skill>0?skill:1); fish_caught->count = skill; fish_caught->pIndexData->count += (skill - 1); numobjsloaded += (skill - 1); act( AT_MAGIC, "You catch some ellusive ell fish.", ch, NULL, NULL, TO_CHAR ); } //Don't let us crash if the fish don't exist. if( !fish_caught ) { log_string( " Error: Fish not created.\n\r" ); send_to_char( "A divine mistake robs you of your catch.\n\r", ch ); } else obj_to_char( fish_caught, ch ); learn_from_success( ch, gsn_fish ); } else { //fail obj_pole->value[0] = 0; //remove bait obj_pole->value[1] = 0; //remove bait_type act( AT_MAGIC, "$n attempts to catch a fish but winds up with an empty hook.", ch, NULL, NULL, TO_ROOM ); act( AT_MAGIC, "You fail to catch anything.", ch, NULL, NULL, TO_CHAR ); learn_from_failure( ch, gsn_fish ); } } void do_bait( CHAR_DATA * ch, char *argument ) { char arg[MAX_INPUT_LENGTH]; OBJ_DATA *obj_pole; OBJ_DATA *bait; argument = one_argument( argument, arg ); if( ms_find_obj( ch ) ) return; if( arg[0] == '\0' ) { if( ( bait = get_objtype_carry( ch, ITEM_BAIT ) ) == NULL ) { send_to_char( "You are not carrying any bait.\n\r", ch ); return; } } else { if( ( bait = get_obj_objtype_carry( ch, arg, ITEM_BAIT ) ) == NULL ) { send_to_char( "You are not carrying that bait.\n\r", ch ); return; } } if( ( obj_pole = get_eq_char( ch, WEAR_HOLD ) ) == NULL || obj_pole->item_type != ITEM_FISHING_POLE ) { send_to_char( "You need to be holding your fishing pole if you want to bait it.\n\r", ch ); return; } if( obj_pole->value[0] > 0 ) { send_to_char( "You already baited your hook.\n\r", ch ); return; } obj_pole->value[0] = 1; switch( bait->pIndexData->vnum ) { case OBJ_VNUM_ROSE_MAGGOT: obj_pole->value[1] = 2; break; case OBJ_VNUM_BOG_WORM: default: obj_pole->value[1] = 0; break; } act( AT_MAGIC, "$n places bait on $s fishing pole.", ch, NULL, NULL, TO_ROOM ); act( AT_MAGIC, "You place bait on your fishing pole.", ch, NULL, NULL, TO_CHAR ); separate_obj( bait ); if( bait->serial == cur_obj ) global_objcode = rOBJ_USED; extract_obj( bait ); return; } */