/* $Id: limited.c,v 1.666 2004/09/20 10:49:49 shrike Exp $ */ /************************************************************************************ * Copyright 2004 Astrum Metaphora consortium * * * * Licensed under the Apache License, Version 2.0 (the "License"); * * you may not use this file except in compliance with the License. * * You may obtain a copy of the License at * * * * http://www.apache.org/licenses/LICENSE-2.0 * * * * Unless required by applicable law or agreed to in writing, software * * distributed under the License is distributed on an "AS IS" BASIS, * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * * See the License for the specific language governing permissions and * * limitations under the License. * * * ************************************************************************************/ #include <sys/types.h> #include <stdio.h> #include <string.h> #include "merc.h" void limits_strip (CHAR_DATA * ch) { OBJ_DATA * obj ; int lim = 1 ; bool found = FALSE ; if (IS_NPC(ch)) return; if (!ch->pcdata) return; if (ch->pcdata->limit_timer != 0) { log_printf ("Limits_strip: called for %s with positive timer.", ch->name) ; } // loop through all object carried by the character for (obj = ch->carrying ; obj != NULL ; obj = obj->next_content) { // do not touch non-limited objects if ((lim = obj->pIndexData->limit) == -1) continue ; if (lim == 0) { bug ("Limits_strip: obj [%d] limited by 0 is in the game!", obj->pIndexData->vnum) ; continue ; } found = TRUE ; // probability to extract limited object if (number_bits (lim) == 1) { extract_obj (obj) ; // increase timer a bit depending on the limited_by number ch->pcdata->limit_timer += (TPH * 2) / lim ; } } // if there was not limit on character (if all limits were cut) if (!found) ch->pcdata->limit_timer = LTIMER_DEFAULT ; }