summaryrefslogtreecommitdiff
path: root/src/map/pc.hpp
blob: 723795740312ba06b4f6e77e1d3ddd384792e84b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
// $Id: pc.h,v 1.4 2004/09/25 05:32:18 MouseJstr Exp $

#ifndef PC_HPP
#define PC_HPP

#include "map.hpp"

#define OPTION_MASK 0xd7b8
#define CART_MASK 0x788

#define pc_setdead(sd) ((sd)->state.dead_sit = 1)
#define pc_setsit(sd) ((sd)->state.dead_sit = 2)
//#define pc_setstand(sd) ((sd)->state.dead_sit = 0)
#define pc_isdead(sd) ((sd)->state.dead_sit == 1)
#define pc_issit(sd) ((sd)->state.dead_sit == 2)
#define pc_setdir(sd,b) ((sd)->dir = (b))
#define pc_setchatid(sd,n) ((sd)->chatID = n)
#define pc_ishiding(sd) ((sd)->status.option&0x4006)
#define pc_iscarton(sd) ((sd)->status.option&CART_MASK)
#define pc_isfalcon(sd) ((sd)->status.option&0x0010)
#define pc_isriding(sd) ((sd)->status.option&0x0020)
#define pc_isinvisible(sd) ((sd)->status.option&0x0040)
#define pc_is50overweight(sd) (sd->weight*2 >= sd->max_weight)
#define pc_is90overweight(sd) (sd->weight*10 >= sd->max_weight*9)

void pc_touch_all_relevant_npcs (struct map_session_data *sd);  /* Checks all npcs/warps at the same location to see whether they
                                                                 ** should do something with the specified player. */

int  pc_isGM (struct map_session_data *sd);
int  pc_iskiller (struct map_session_data *src, struct map_session_data *target);   // [MouseJstr]
int  pc_getrefinebonus (int lv, int type);

void pc_invisibility (struct map_session_data *sd, int enabled);    // [Fate]
int  pc_counttargeted (struct map_session_data *sd, struct block_list *src,
                       int target_lv);
int  pc_setrestartvalue (struct map_session_data *sd, int type);
int  pc_makesavestatus (struct map_session_data *);
int  pc_setnewpc (struct map_session_data *, int, int, int, int, int, int);
int  pc_authok (int, int, time_t, short tmw_version, struct mmo_charstatus *);
int  pc_authfail (int);

int  pc_isequip (struct map_session_data *sd, int n);
int  pc_equippoint (struct map_session_data *sd, int n);

int  pc_breakweapon (struct map_session_data *sd);  // weapon breaking [Valaris]
int  pc_breakarmor (struct map_session_data *sd);   // armor breaking [Valaris]

int  pc_checkskill (struct map_session_data *sd, int skill_id);
int  pc_checkallowskill (struct map_session_data *sd);
int  pc_checkequip (struct map_session_data *sd, int pos);

int  pc_checkoverhp (struct map_session_data *);
int  pc_checkoversp (struct map_session_data *);

int  pc_can_reach (struct map_session_data *, int, int);
int  pc_walktoxy (struct map_session_data *, int, int);
int  pc_stop_walking (struct map_session_data *, int);
int  pc_movepos (struct map_session_data *, int, int);
int  pc_setpos (struct map_session_data *, char *, int, int, int);
int  pc_setsavepoint (struct map_session_data *, char *, int, int);
int  pc_randomwarp (struct map_session_data *sd, int type);
int  pc_memo (struct map_session_data *sd, int i);

int  pc_checkadditem (struct map_session_data *, int, int);
int  pc_inventoryblank (struct map_session_data *);
int  pc_search_inventory (struct map_session_data *sd, int item_id);
int  pc_payzeny (struct map_session_data *, int);
int  pc_additem (struct map_session_data *, struct item *, int);
int  pc_getzeny (struct map_session_data *, int);
int  pc_delitem (struct map_session_data *, int, int, int);
int  pc_checkitem (struct map_session_data *);
int  pc_count_all_items (struct map_session_data *player, int item_id);
int  pc_remove_items (struct map_session_data *player, int item_id,
                      int count);

int  pc_cart_additem (struct map_session_data *sd, struct item *item_data,
                      int amount);
int  pc_cart_delitem (struct map_session_data *sd, int n, int amount,
                      int type);
int  pc_putitemtocart (struct map_session_data *sd, int idx, int amount);
int  pc_getitemfromcart (struct map_session_data *sd, int idx, int amount);
int  pc_cartitem_amount (struct map_session_data *sd, int idx, int amount);

int  pc_takeitem (struct map_session_data *, struct flooritem_data *);
int  pc_dropitem (struct map_session_data *, int, int);

int  pc_checkweighticon (struct map_session_data *sd);

int  pc_calcstatus (struct map_session_data *, int);
int  pc_bonus (struct map_session_data *, int, int);
int  pc_bonus2 (struct map_session_data *sd, int, int, int);
int  pc_bonus3 (struct map_session_data *sd, int, int, int, int);
int  pc_skill (struct map_session_data *, int, int, int);

int  pc_insert_card (struct map_session_data *sd, int idx_card,
                     int idx_equip);

int  pc_item_identify (struct map_session_data *sd, int idx);
int  pc_steal_item (struct map_session_data *sd, struct block_list *bl);
int  pc_steal_coin (struct map_session_data *sd, struct block_list *bl);

int  pc_modifybuyvalue (struct map_session_data *, int);
int  pc_modifysellvalue (struct map_session_data *, int);

int  pc_attack (struct map_session_data *, int, int);
int  pc_stopattack (struct map_session_data *);

int  pc_follow (struct map_session_data *, int);    // [MouseJstr]

int  pc_checkbaselevelup (struct map_session_data *sd);
int  pc_checkjoblevelup (struct map_session_data *sd);
int  pc_gainexp (struct map_session_data *, int, int);

#define PC_GAINEXP_REASON_KILLING	0
#define PC_GAINEXP_REASON_HEALING	1
#define PC_GAINEXP_REASON_SCRIPT	2
int  pc_gainexp_reason (struct map_session_data *, int, int, int reason);
int  pc_extract_healer_exp (struct map_session_data *, int max);    // [Fate] Used by healers: extract healer-xp from the target, return result (up to max)

int  pc_nextbaseexp (struct map_session_data *);
int  pc_nextbaseafter (struct map_session_data *);  // [Valaris]
int  pc_nextjobexp (struct map_session_data *);
int  pc_nextjobafter (struct map_session_data *);   // [Valaris]
int  pc_need_status_point (struct map_session_data *, int);
int  pc_statusup (struct map_session_data *, int);
int  pc_statusup2 (struct map_session_data *, int, int);
int  pc_skillup (struct map_session_data *, int);
int  pc_allskillup (struct map_session_data *);
int  pc_resetlvl (struct map_session_data *, int type);
int  pc_resetstate (struct map_session_data *);
int  pc_resetskill (struct map_session_data *);
int  pc_equipitem (struct map_session_data *, int, int);
int  pc_unequipitem (struct map_session_data *, int, int);
int  pc_unequipinvyitem (struct map_session_data *, int, int);
int  pc_checkitem (struct map_session_data *);
int  pc_useitem (struct map_session_data *, int);

int  pc_damage (struct block_list *, struct map_session_data *, int);
int  pc_heal (struct map_session_data *, int, int);
int  pc_itemheal (struct map_session_data *sd, int hp, int sp);
int  pc_percentheal (struct map_session_data *sd, int, int);
int  pc_jobchange (struct map_session_data *, int, int);
int  pc_setoption (struct map_session_data *, int);
int  pc_setcart (struct map_session_data *sd, int type);
int  pc_setfalcon (struct map_session_data *sd);
int  pc_setriding (struct map_session_data *sd);
int  pc_changelook (struct map_session_data *, int, int);
int  pc_equiplookall (struct map_session_data *sd);

int  pc_readparam (struct map_session_data *, int);
int  pc_setparam (struct map_session_data *, int, int);
int  pc_readreg (struct map_session_data *, int);
int  pc_setreg (struct map_session_data *, int, int);
char *pc_readregstr (struct map_session_data *sd, int reg);
int  pc_setregstr (struct map_session_data *sd, int reg, char *str);
int  pc_readglobalreg (struct map_session_data *, char *);
int  pc_setglobalreg (struct map_session_data *, char *, int);
int  pc_readaccountreg (struct map_session_data *, char *);
int  pc_setaccountreg (struct map_session_data *, char *, int);
int  pc_readaccountreg2 (struct map_session_data *, char *);
int  pc_setaccountreg2 (struct map_session_data *, char *, int);
int  pc_percentrefinery (struct map_session_data *sd, struct item *item);

int  pc_addeventtimer (struct map_session_data *sd, int tick,
                       const char *name);
int  pc_deleventtimer (struct map_session_data *sd, const char *name);
int  pc_cleareventtimer (struct map_session_data *sd);
int  pc_addeventtimercount (struct map_session_data *sd, const char *name,
                            int tick);

int  pc_calc_pvprank (struct map_session_data *sd);
void pc_calc_pvprank_timer (timer_id, tick_t, custom_id_t, custom_data_t);

int  pc_ismarried (struct map_session_data *sd);
int  pc_marriage (struct map_session_data *sd,
                  struct map_session_data *dstsd);
int  pc_divorce (struct map_session_data *sd);
struct map_session_data *pc_get_partner (struct map_session_data *sd);
int  pc_set_gm_level (int account_id, int level);
void pc_setstand (struct map_session_data *sd);
void pc_cleanup (struct map_session_data *sd);  // [Fate] Clean up after a logged-out PC

struct pc_base_job
{
    int  job;                   //職業、ただし転生職や養子職の場合は元の職業を返す(廃プリ→プリ)
    int  type;                  //ノビ 0, 一次職 1, 二次職 2, スパノビ 3
    int  upper;                 //通常 0, 転生 1, 養子 2
};

struct pc_base_job pc_calc_base_job (int b_class);  //転生や養子職の元の職業を返す

int  pc_read_gm_account (int fd);
int  pc_setinvincibletimer (struct map_session_data *sd, int);
int  pc_delinvincibletimer (struct map_session_data *sd);
int  pc_addspiritball (struct map_session_data *sd, int, int);
int  pc_delspiritball (struct map_session_data *sd, int, int);
int  pc_logout (struct map_session_data *sd);   // [fate] Player logs out

int  do_init_pc (void);

enum
{ ADDITEM_EXIST, ADDITEM_NEW, ADDITEM_OVERAMOUNT };

// timer for night.day
timer_id day_timer_tid;
timer_id night_timer_tid;
void map_day_timer (timer_id, tick_t, custom_id_t, custom_data_t);   // by [yor]
void map_night_timer (timer_id, tick_t, custom_id_t, custom_data_t); // by [yor]

#endif