/* $Id: shamans.h,v 1.666 2004/09/20 10:49:53 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. * * * ************************************************************************************/ #ifndef __SHAMANS_H #define __SHAMANS_H bool check_tattoo (CHAR_DATA * ch, int sn); bool check_violet_stars (CHAR_DATA * ch); bool check_tigers_snout (CHAR_DATA * ch, CHAR_DATA * victim); // -------------------------------------------------------------------------- // TATTOES // -------------------------------------------------------------------------- // colors for tattooes // to add a color XXX: // 1. add F_TATTOO_COLOR_XXX flag // 2. add TATTOO_COLOR_XXX constant // 3. add line into paint_color_flags and paint_color_int_flags in tables.c // 4. add line into tattoo_colors in shamans.c #define F_TATTOO_COLOR_RED (A) #define F_TATTOO_COLOR_BLUE (B) #define F_TATTOO_COLOR_GREEN (C) #define F_TATTOO_COLOR_MAGENTA (D) #define F_TATTOO_COLOR_WHITE (E) #define F_TATTOO_COLOR_BLACK (F) #define F_TATTOO_COLOR_GOLD (G) #define F_TATTOO_COLOR_SILVER (H) #define F_TATTOO_COLOR_BROWN (I) #define TATTOO_COLOR_RED 0 #define TATTOO_COLOR_BLUE 1 #define TATTOO_COLOR_GREEN 2 #define TATTOO_COLOR_MAGENTA 3 #define TATTOO_COLOR_WHITE 4 #define TATTOO_COLOR_BLACK 5 #define TATTOO_COLOR_GOLD 6 #define TATTOO_COLOR_SILVER 7 #define TATTOO_COLOR_BROWN 8 #define TATTOO_COLOR_MAX 9 // tattoo extra flags #define TE_PAINT_OTHER (A) // tattoo can be painted on others #define TE_ONE_COPY (B) // only one copy of this tattoo can be painted #define TE_SPELLUP (C) // SPELLUP1, SPELLUP2 wishes work for this tattoo DECLARE_DO_FUN (do_make_tattoo); // called from do_make DECLARE_DO_FUN (do_remove_tattoo); // called from do_remove DECLARE_DO_FUN (do_examine_tattoo); // called from do_examine typedef struct tattoo_t tattoo_t; extern varr tattooes; #define MAX_TATTOO_COMP 5 struct tattoo_t { const char * name; // must be the same with skill_name mlstring * desc; // tattoo's short_desc int paint_comp[MAX_TATTOO_COMP]; // components used for painting int act_comp[MAX_TATTOO_COMP]; // components used for activation int wait_paint; // WAIT_STATE for tattooing int wait_act; // and for activation // NB! overrides skill's wait_state flag32_t wear_loc; // body part(s) flag32_t paints; // color(s) flag32_t extra; // extra flags (e.g. can paint on others) int min_skill; // min % of 'tattoo' skill int max_activations; // max number of activations, -1 - infinite }; tattoo_t * tattoo_new (void); void tattoo_free (tattoo_t *); #define TATTOO(tn) ((tattoo_t*) VARR_GET(&tattooes, tn)) #define tattoo_lookup(tn) ((tattoo_t*) varr_get(&tattooes, tn)) int tattoonumber_lookup (const char * name); const char * tattoo_name (int tn); // -------------------------------------------------------------------------- // PAINTS // -------------------------------------------------------------------------- typedef struct paint_t paint_t; DECLARE_DO_FUN (do_make_paint); // called from do_make extern varr paints; #define MAX_PAINT_COMP 5 struct paint_t { const char * name; // name used to identify a paint const char * obj_name; // name, mlstring * short_desc; // short mlstring * desc; // and long of created object int components[MAX_PAINT_COMP]; // components used to make a paint int color; // color of target paint int min_skill; // min % of 'paint craft' skill int mana_cost; // mana cost for creation int max_portions; // max_portions (value can be overwritten in do_make_paint) int power; // power (value can be overwritten in do_make_paint) }; paint_t * paint_new (void); void paint_free (paint_t *); #define PAINT(pn) ((paint_t*) VARR_GET(&paints, pn)) #define paint_lookup(pn) ((paint_t*) varr_get(&paints, pn)) int paintnumber_lookup (const char * name); const char * paint_name (int pn); // -------------------------------------------------------------------------- // RITUALS // -------------------------------------------------------------------------- // ritual extra flags #define RE_NO_ADRENALIN (A) // char must not be pumped #define RE_FULL_HP (B) // char must have full hp #define RE_SPELLUP (C) // SPELLUP1, SPELLUP2 wishes work for this ritual typedef struct ritual_t ritual_t; extern varr rituals; #define MAX_RITUAL_COMP 5 struct ritual_t { const char * name; // must be the same with skill_name int components[MAX_RITUAL_COMP]; // components used to perform a ritual flag32_t sector; // sector(s) in which ritual can be performed flag32_t time; // time interval(s) flag32_t extra; // extra flags (e.g. no_adrenalin) int duration; // duration int min_skill; // min % of 'ceremonialism' skill }; ritual_t * ritual_new (void); void ritual_free (ritual_t *); #define RITUAL(rn) ((ritual_t*) VARR_GET(&rituals, rn)) #define ritual_lookup(rn) ((ritual_t*) varr_get(&rituals, rn)) int ritualnumber_lookup (const char * name); const char * ritual_name (int rn); // flag to int stuff typedef struct flag_to_int_t flag_to_int_t; struct flag_to_int_t { flag64_t flag; int n_int; }; #define FLAG_TO_INT_MAX 999 #endif