SPEC_DAMAGE *new_spec_damage(void) { SPEC_DAMAGE *new_specdam; if ( !spec_damage_free ) { CREATE( new_specdam, SPEC_DAMAGE, 1 ); } else { new_specdam = spec_damage_free; spec_damage_free = spec_damage_free->next; } new_specdam->type = SD_TYPE_NONE; new_specdam->chance = 100; new_specdam->param1 = SD_PARAM_ANY; new_specdam->param2 = SD_PARAM_ANY; new_specdam->param3 = SD_PARAM_ANY; ext_flags_clear( new_specdam->ext_param ); new_specdam->bonus = 0; new_specdam->next = NULL; new_specdam->target_type = SD_TARGET_DAM; return new_specdam; }
BONUS_INDEX_DATA *new_bonus_index( void ) { BONUS_INDEX_DATA *pBonus; if ( !bonus_index_free ) CREATE( pBonus, BONUS_INDEX_DATA, 1 ); else { pBonus = bonus_index_free; bonus_index_free = bonus_index_free->next; } pBonus->next = NULL; pBonus->affects = NULL; pBonus->area = NULL; ext_flags_clear( pBonus->prog_flags ); pBonus->name = &str_empty[0]; pBonus->description = &str_empty[0]; pBonus->comments = &str_empty[0]; pBonus->wear_prog = &str_empty[0]; pBonus->remove_prog = &str_empty[0]; pBonus->extra_descr = NULL; pBonus->vnum = 0; return pBonus; }
/* * Zwraca flagi z zapalonymi bitami dla podanych w fomie tekstowej opcji oddzielonych spacjami */ long * ext_flag_value( const struct ext_flag_type * ext_flag_table, char * argument ) { char word[MAX_INPUT_LENGTH]; BITVECT_DATA * bit; static long marked[MAX_VECT_BANK]; bool found = FALSE; ext_flags_clear( marked ); /* * Accept multiple flags. */ for (; ;) { argument = one_argument( argument, word ); if ( word[0] == '\0' ) break; bit = ext_flag_lookup( word, ext_flag_table ); if ( bit != &EXT_NONE ) { EXT_SET_BIT( marked, *bit ); found = TRUE; } } if ( found ) return &marked[0]; else return NULL; }
ROOM_INDEX_DATA *new_room_index( void ) { ROOM_INDEX_DATA *pRoom; int door; if ( !room_index_free ) { CREATE( pRoom, ROOM_INDEX_DATA, 1 ); top_room++; } else { pRoom = room_index_free; room_index_free = room_index_free->next; } pRoom->next = NULL; pRoom->people = NULL; pRoom->contents = NULL; pRoom->extra_descr = NULL; pRoom->area = NULL; pRoom->minds = NULL; for ( door=0; door < MAX_DIR; door++ ) pRoom->exit[door] = NULL; pRoom->name = &str_empty[0]; pRoom->description = &str_empty[0]; pRoom->nightdesc = &str_empty[0]; pRoom->night_rand_desc = 0; pRoom->day_rand_desc = 0; pRoom->owner = &str_empty[0]; pRoom->vnum = 0; ext_flags_clear( pRoom->room_flags ); pRoom->light = 0; pRoom->sector_type = 8; pRoom->heal_rate = 100; pRoom->rent_rate = 100; pRoom->herbs_count = 0; pRoom->area_part = 0; ext_flags_clear( pRoom->prog_flags ); pRoom->prog_delay = 0; pRoom->prog_target = NULL; pRoom->echo_to.vnum = 0; pRoom->has_memdat = 0; return pRoom; }
MOB_INDEX_DATA *new_mob_index( void ) { MOB_INDEX_DATA *pMob; int i; if ( !mob_index_free ) { CREATE( pMob, MOB_INDEX_DATA, 1 ); top_mob_index++; } else { pMob = mob_index_free; mob_index_free = mob_index_free->next; } pMob->next = NULL; pMob->spec_fun = NULL; pMob->pShop = NULL; pMob->pRepair = NULL; pMob->area = NULL; pMob->player_name = str_dup( "no name" ); pMob->name2 = str_dup( "null" ); pMob->name3 = str_dup( "null" ); pMob->name4 = str_dup( "null" ); pMob->name5 = str_dup( "null" ); pMob->name6 = str_dup( "null" ); pMob->short_descr = str_dup( "(no short description)" ); pMob->long_descr = str_dup( "(no long description)" ); pMob->description = &str_empty[0]; pMob->vnum = 0; pMob->count = 0; pMob->killed = 0; pMob->sex = 0; pMob->level = 0; ext_flags_clear( pMob->act ); EXT_SET_BIT( pMob->act, ACT_IS_NPC ); pMob->languages = LANG_COMMON; pMob->speaking = 0; pMob->corpse_vnum = 0; pMob->skin_multiplier = 0; for(i=0;i < 16 ;i++) pMob->spells[i] = 0; for(i=0;i < MAX_RESIST ;i++) { pMob->resists[i] = 0; pMob->healing_from[i] = 0; } for(i=0;i<MAX_VECT_BANK;i++) pMob->affected_by[i] = 0; pMob->alignment = 0; pMob->hitroll = 0; pMob->race = race_lookup( "human" ); pMob->form = 0; pMob->parts = 0; pMob->material = str_dup("unknown"); ext_flags_clear( pMob->off_flags ); pMob->size = SIZE_MEDIUM; pMob->ac[AC_PIERCE] = 100; pMob->ac[AC_BASH] = 100; pMob->ac[AC_SLASH] = 100; pMob->ac[AC_EXOTIC] = 100; pMob->stats[0] =13; pMob->stats[1] =13; pMob->stats[2] =13; pMob->stats[3] =13; pMob->stats[4] =13; pMob->stats[5] =13; pMob->stats[6] =13; pMob->hit[DICE_NUMBER] = 0; pMob->hit[DICE_TYPE] = 0; pMob->hit[DICE_BONUS] = 0; pMob->damage[DICE_NUMBER] = 0; pMob->damage[DICE_TYPE] = 0; pMob->damage[DICE_NUMBER] = 0; pMob->start_pos = POS_STANDING; pMob->default_pos = POS_STANDING; pMob->wealth = 0; pMob->comments = str_dup(""); pMob->new_format = TRUE; return pMob; }
OBJ_INDEX_DATA *new_obj_index( void ) { OBJ_INDEX_DATA *pObj; int value; if ( !obj_index_free ) { CREATE( pObj, OBJ_INDEX_DATA, 1 ); top_obj_index++; } else { pObj = obj_index_free; obj_index_free = obj_index_free->next; } pObj->next = NULL; pObj->extra_descr = NULL; pObj->affected = NULL; pObj->area = NULL; pObj->spec_dam = NULL; pObj->name = str_dup( "no name" ); pObj->name2 = str_dup( "null" ); pObj->name3 = str_dup( "null" ); pObj->name4 = str_dup( "null" ); pObj->name5 = str_dup( "null" ); pObj->name6 = str_dup( "null" ); pObj->short_descr = str_dup( "(no short description)" ); pObj->description = str_dup( "(no description)" ); pObj->description = str_dup( "" ); pObj->item_description = NULL; pObj->ident_description = NULL; pObj->hidden_description = NULL; pObj->comments = str_dup(""); pObj->vnum = 0; pObj->item_type = ITEM_TRASH; ext_flags_clear( pObj->extra_flags ); pObj->wear_flags = 0; ext_flags_clear( pObj->wear_flags2 ); pObj->count = 0; pObj->weight = 1; pObj->cost = 1; pObj->material = 0; pObj->condition = 75; pObj->rent_cost = 0; pObj->bonus_set = 0; pObj->trap = 0; pObj->liczba_mnoga = FALSE; pObj->gender = 0; //rellik: komponenty, nowa definicja obiektu nie jest komponentem pObj->is_spell_item = FALSE; for ( value = 0; value < 7; value++ ) pObj->value[value] = 0; pObj->new_format = TRUE; return pObj; }