ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/server/player.C
(Generate patch)

Comparing deliantra/server/server/player.C (file contents):
Revision 1.137 by root, Thu May 17 14:14:55 2007 UTC vs.
Revision 1.141 by root, Fri May 18 15:05:09 2007 UTC

147 draw_ext_info_format (NDI_UNIQUE | NDI_GREEN, 0, op, 147 draw_ext_info_format (NDI_UNIQUE | NDI_GREEN, 0, op,
148 MSG_TYPE_ADMIN, MSG_TYPE_ADMIN_NEWS, "INFORMATION: %s\n%s\n", (char *)"%s\n%s", subject, news); 148 MSG_TYPE_ADMIN, MSG_TYPE_ADMIN_NEWS, "INFORMATION: %s\n%s\n", (char *)"%s\n%s", subject, news);
149 close_and_delete (fp, comp); 149 close_and_delete (fp, comp);
150} 150}
151 151
152float
153player::weapon_speed () const
154{
155 return ob->speed / weapon_sp * .5f;//TODO, the .5 is arbitrary
156}
157
158/* This loads the first map an puts the player on it. */ 152/* This loads the first map an puts the player on it. */
159static void 153static void
160set_first_map (object *op) 154set_first_map (object *op)
161{ 155{
162 op->contr->maplevel = first_map_path; 156 op->contr->maplevel = first_map_path;
264 258
265 new_draw_info (NDI_UNIQUE, 0, ob, "Welcome Back!"); 259 new_draw_info (NDI_UNIQUE, 0, ob, "Welcome Back!");
266 260
267 esrv_new_player (this, ob->weight + ob->carrying); 261 esrv_new_player (this, ob->weight + ob->carrying);
268 262
263 ob->flag [FLAG_READY_WEAPON] = false;
264 ob->flag [FLAG_READY_SKILL] = false;
265 ob->flag [FLAG_READY_BOW] = false;
266
269 for (object *op = ob->inv; op; op = op->below) 267 for (object *op = ob->inv; op; op = op->below)
270 if (op->flag [FLAG_APPLIED]) 268 if (op->flag [FLAG_APPLIED])
271 switch (op->type) 269 switch (op->type)
272 { 270 {
271 case SKILL:
272 ob->flag [FLAG_APPLIED] = false;
273 break;
274
273 case WAND: 275 case WAND:
274 case ROD: 276 case ROD:
275 case HORN: 277 case HORN:
276 case BOW: 278 case BOW:
277 case SKILL: 279 ranged_ob = op;
278 case SKILL_TOOL: 280 break;
281
279 case WEAPON: 282 case WEAPON:
280 apply_special (ob, op, AP_UNAPPLY); 283 combat_ob = op;
281 apply_special (ob, op, AP_APPLY);
282 break; 284 break;
283 } 285 }
284 286
287 ob->change_weapon (combat_ob ? combat_ob : ranged_ob);
285 ob->update_stats (); 288 ob->update_stats ();
289
286 ns->floorbox_update (); 290 ns->floorbox_update ();
287
288 esrv_send_inventory (ob, ob); 291 esrv_send_inventory (ob, ob);
289 esrv_add_spells (this, 0); 292 esrv_add_spells (this, 0);
290 293
291 activate (); 294 activate ();
292 295
1637 if (player *pl = op->contr) 1640 if (player *pl = op->contr)
1638 { 1641 {
1639 if (!pl->has_hit) 1642 if (!pl->has_hit)
1640 { 1643 {
1641 pl->has_hit = 1; 1644 pl->has_hit = 1;
1642 pl->ob->speed_left += pl->weapon_speed () - pl->ob->speed; 1645 pl->ob->speed_left += pl->weapon_sp - pl->ob->speed;
1643 } 1646 }
1644#if 0 1647#if 0
1645 float speed = pl->weapon_sp; 1648 float speed = pl->weapon_sp;
1646 1649
1647 /* penalize ROF for bestarrow */ 1650 /* penalize ROF for bestarrow */
2167 ((mon->type != PLAYER || op->contr->party == NULL || op->contr->party != mon->contr->party))) 2170 ((mon->type != PLAYER || op->contr->party == NULL || op->contr->party != mon->contr->party)))
2168 { 2171 {
2169 if (!op->contr->has_hit) 2172 if (!op->contr->has_hit)
2170 { 2173 {
2171 op->contr->has_hit = 1; 2174 op->contr->has_hit = 1;
2172 op->speed_left += op->contr->weapon_speed () - op->speed; 2175 op->speed_left += op->contr->weapon_sp - op->speed;
2173 } 2176 }
2174 2177
2175 skill_attack (mon, op, 0, 0, 0); 2178 skill_attack (mon, op, 0, 0, 0);
2176 2179
2177 /* If attacking another player, that player gets automatic 2180 /* If attacking another player, that player gets automatic

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines