summaryrefslogblamecommitdiffstats
path: root/crawl-ref/source/item_use.h
blob: d264d0fdf68df55a2dc3fadc0c49e2ffd9f67219 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
  
                          

                                                            







                  

                    
 

            





                      

              










                            

                                                               


            
           
 
                                                                               
 

                               
                          
 
                                                                
 

                                                              
 
                          
 
                               
                                                                
 

                                            
                                
 
                                                       
 
                                            
                                                

                                                                     
                                
 
                                
 

                                                                                
                                          
 
                
 
                                                      
                                                         
 


                                                                     
 
                             
 

                                                    

                                                                               
 
                          
 

                                                                             
 
                                                                       

                                                                 

                                                                      

                                                              
 
                                                                     
 
                            
                                                      
                                                     
                                                  


                                                 
 

                                




                                                          
               





                                      

      
      
/*
 *  File:       item_use.h
 *  Summary:    Functions for making use of inventory items.
 *  Written by: Linley Henzell
 */


#ifndef ITEM_USE_H
#define ITEM_USE_H


#include <string>
#include "externs.h"
#include "enum.h"

struct bolt;

enum enchant_stat_type
{
    ENCHANT_TO_HIT,
    ENCHANT_TO_DAM
};

enum fire_type
{
    FIRE_NONE      = 0x0000,
    FIRE_LAUNCHER  = 0x0001,
    FIRE_DART      = 0x0002,
    FIRE_STONE     = 0x0004,
    FIRE_DAGGER    = 0x0008,
    FIRE_JAVELIN   = 0x0010,
    FIRE_SPEAR     = 0x0020,
    FIRE_HAND_AXE  = 0x0040,
    FIRE_CLUB      = 0x0080,
    FIRE_ROCK      = 0x0100,
    FIRE_NET       = 0x0200,
    FIRE_RETURNING = 0x0400,
    FIRE_INSCRIBED = 0x0800    // Only used for _get_fire_order
};

struct bolt;
class dist;

bool armour_prompt(const std::string & mesg, int *index, operation_types oper);

bool takeoff_armour(int index);

void drink(int slot = -1);

bool elemental_missile_beam(int launcher_brand, int ammo_brand);

bool safe_to_remove_or_wear(const item_def &item, bool remove,
                            bool quiet = false);

void examine_object(void);

bool puton_ring(int slot = -1);
void jewellery_remove_effects(item_def &item, bool mesg = true);

void jewellery_wear_effects(item_def &item);

void read_scroll(int slot = -1);

bool remove_ring(int slot = -1, bool announce = false);

bool item_is_quivered(const item_def &item);
int get_next_fire_item(int current, int offset);
int get_ammo_to_shoot(int item, dist &target, bool teleport = false);
void fire_thing(int item = -1);
void throw_item_no_quiver(void);

void wear_armour(int slot = -1);

bool can_wear_armour(const item_def &item, bool verbose, bool ignore_temporary);

bool do_wear_armour(int item, bool quiet);

struct item_def;

bool can_wield(item_def *weapon, bool say_why = false,
               bool ignore_temporary_disability = false);

bool wield_weapon(bool auto_wield, int slot = -1,
                  bool show_weff_messages = true, bool force = false,
                  bool show_unwield_msg = true);

void zap_wand(int slot = -1);

void wield_effects(int item_wield_2, bool showMsgs);

void use_artefact( unsigned char item_wield_2, bool *show_msgs = NULL);
void use_artefact(item_def &item, bool *show_msgs = NULL, bool unmeld = false);

bool puton_item(int slot);

bool enchant_weapon(enchant_stat_type which_stat, bool quiet, item_def &wpn);
bool enchant_armour(int &ac_change, bool quiet, item_def &arm);

bool setup_missile_beam(const actor *actor, bolt &beam, item_def &item,
                        std::string &ammo_name, bool &returning);

void throw_noise(actor* act, const bolt &pbolt, const item_def &ammo);

bool throw_it(bolt &pbolt, int throw_2, bool teleport = false,
              int acc_bonus = 0, dist *target = NULL);

bool thrown_object_destroyed(item_def *item, const coord_def& where);

void prompt_inscribe_item();
int launcher_shield_slowdown(const item_def &launcher,
                             const item_def *shield);
int launcher_final_speed(const item_def &launcher,
                         const item_def *shield);

void warn_shield_penalties();

bool wearing_slot(int inv_slot);

bool item_blocks_teleport(bool permit_id);
bool stasis_blocks_effect(bool identify,
                          const char *msg, int noise = 0,
                          const char *silencedmsg = NULL);

#ifdef USE_TILE
void tile_item_use_floor(int idx);
void tile_item_pickup(int idx);
void tile_item_drop(int idx);
void tile_item_eat_floor(int idx);
void tile_item_use(int idx);
void tile_item_use_secondary(int idx);
#endif

#endif