… | |
… | |
76 | ob->remove (); |
76 | ob->remove (); |
77 | ob->enemy = 0; // sometimes keeps an extra refcount on itself |
77 | ob->enemy = 0; // sometimes keeps an extra refcount on itself |
78 | ob->map = 0; |
78 | ob->map = 0; |
79 | party = 0; |
79 | party = 0; |
80 | |
80 | |
81 | combat_ob = ranged_ob = 0; //TODO, should be special marker, non-refcounted, not this |
|
|
82 | |
|
|
83 | players.erase (this); |
81 | players.erase (this); |
84 | } |
82 | } |
85 | |
83 | |
86 | // connect the player with a specific client |
84 | // connect the player with a specific client |
87 | // also changes, rationalises, and fixes some incorrect settings |
85 | // also changes, rationalises, and fixes some incorrect settings |
… | |
… | |
139 | ob->flag [FLAG_READY_WEAPON] = false; |
137 | ob->flag [FLAG_READY_WEAPON] = false; |
140 | ob->flag [FLAG_READY_SKILL] = false; |
138 | ob->flag [FLAG_READY_SKILL] = false; |
141 | ob->flag [FLAG_READY_RANGE] = false; |
139 | ob->flag [FLAG_READY_RANGE] = false; |
142 | ob->flag [FLAG_READY_BOW] = false; |
140 | ob->flag [FLAG_READY_BOW] = false; |
143 | |
141 | |
144 | for (object *op = ob->inv; op; op = op->below) |
|
|
145 | if (op->flag [FLAG_APPLIED]) |
|
|
146 | switch (op->type) |
|
|
147 | { |
|
|
148 | case SKILL: |
|
|
149 | op->flag [FLAG_APPLIED] = false; |
|
|
150 | break; |
|
|
151 | |
|
|
152 | case SPELL: |
|
|
153 | case WAND: |
|
|
154 | case ROD: |
|
|
155 | case HORN: |
|
|
156 | case BOW: |
|
|
157 | case RANGED: |
|
|
158 | ranged_ob = op; |
|
|
159 | op->flag [FLAG_APPLIED] = false; |
|
|
160 | break; |
|
|
161 | |
|
|
162 | case WEAPON: |
|
|
163 | combat_ob = op; |
|
|
164 | op->flag [FLAG_APPLIED] = false; |
|
|
165 | break; |
|
|
166 | } |
|
|
167 | |
|
|
168 | ob->update_stats (); // we unapplied stuff above |
142 | ob->update_stats (); // we unapplied stuff above |
169 | |
|
|
170 | ob->current_weapon = 0; |
|
|
171 | if (object *item = combat_ob ? combat_ob : ranged_ob) |
|
|
172 | ob->apply (item); |
|
|
173 | |
|
|
174 | activate (); |
143 | activate (); |
175 | |
144 | |
176 | INVOKE_PLAYER (CONNECT, this); |
145 | INVOKE_PLAYER (CONNECT, this); |
177 | INVOKE_PLAYER (LOGIN, this); |
146 | INVOKE_PLAYER (LOGIN, this); |
178 | } |
147 | } |
… | |
… | |
3209 | else |
3178 | else |
3210 | j = 1; |
3179 | j = 1; |
3211 | strcat (buf, spellpathnames[i]); |
3180 | strcat (buf, spellpathnames[i]); |
3212 | } |
3181 | } |
3213 | } |
3182 | } |
|
|
3183 | |
3214 | strcat (buf, "."); |
3184 | strcat (buf, "."); |
3215 | new_draw_info (NDI_UNIQUE | NDI_BLUE, 0, who, buf); |
3185 | new_draw_info (NDI_UNIQUE | NDI_BLUE, 0, who, buf); |
3216 | } |
3186 | } |
3217 | |
3187 | |
3218 | /* evtl. adding flags: */ |
3188 | /* evtl. adding flags: */ |