/* * Copyright (C) 2002-2007 The Warp Rogue Team * Part of the Warp Rogue Project * * This software is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License. * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY. * * See the license.txt file for more details. */ /* * Module Name: Object * Description: - */ /* * misc. object related contants */ #define MONEY_OBJECT_NAME "Credits" #define MIN_SG_FOR_TOME_READING 50 /* * object attribute constants */ #define POWER_WEAPON_ARMOUR_VALUE_DIVIDER 2 #define SHOCK_STUN_POWER 10 #define FORCE_DAMAGE_BONUS dice(1, 10) #define FORCE_RUNE_DAMAGE_BONUS dice(2, 8) #define FORCE_VS_DAEMON_MULTIPLIER 2 /* * static object data */ typedef struct { /* common data ****************************/ char name[OBJECT_NAME_SIZE]; NUMERUS numerus; SYMBOL symbol; DYNAMIC_COLOUR colour; char description[DESCRIPTION_SIZE]; bool attribute[MAX_OBJECT_ATTRIBUTES]; CONDITION condition_max; CHARGE charge_max; OBJECT_TYPE type; OBJECT_SUBTYPE subtype; WEIGHT weight; MONEY value; /******************************************/ /* weapons only ***************************/ DICE_ROLL damage; /******************************************/ /* ranged combat weapons only *************/ FIRING_MODE_DATA firing_mode; RELOAD_VALUE reload; /******************************************/ /* close combat weapons only **************/ WEAPON_REACH reach; PARRY_PENALTY parry_penalty; /******************************************/ /* armours only ***************************/ ARMOUR_VALUE armour_value; /******************************************/ } OBJECT_DATA; void object_init(void); void object_clean_up(void); OBJECT_DATA * object_box_new_object(void); void object_box_optimize(void); void * object_new(void); void object_free(void *); OBJECT * object_create(const char *); OBJECT * object_create_i(OBJECT_INDEX); void object_destroy(void *); OBJECT * object_clone(const OBJECT *); void object_screen(const OBJECT *); void object_attribute_screen(OBJECT_ATTRIBUTE); const OBJECT_DATA * object_static_data(const OBJECT *); bool object_has_attribute(const OBJECT *, OBJECT_ATTRIBUTE ); char * object_attribute_description(char *, OBJECT_ATTRIBUTE ); const char * object_type_name(OBJECT_TYPE); const char * object_subtype_name(OBJECT_SUBTYPE); const char * object_attribute_name(OBJECT_ATTRIBUTE); OBJECT_TYPE name_to_object_type(const char *); OBJECT_SUBTYPE name_to_object_subtype(const char *); OBJECT_ATTRIBUTE name_to_object_attribute(const char *); LIST * object_list_drugs(CHARACTER *);