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

Comparing deliantra/server/common/object.C (file contents):
Revision 1.334 by root, Fri Apr 23 09:22:46 2010 UTC vs.
Revision 1.335 by root, Sun Apr 25 10:45:38 2010 UTC

1572 */ 1572 */
1573 1573
1574 /* if this is not the head or flag has been passed, don't check walk on status */ 1574 /* if this is not the head or flag has been passed, don't check walk on status */
1575 if (!(flag & INS_NO_WALK_ON) && op->is_head ()) 1575 if (!(flag & INS_NO_WALK_ON) && op->is_head ())
1576 { 1576 {
1577 if (check_move_on (op, originator, flag)) 1577 if (check_move_on (op, originator))
1578 return 0; 1578 return 0;
1579 1579
1580 /* If we are a multi part object, let's work our way through the check 1580 /* If we are a multi part object, let's work our way through the check
1581 * walk on's. 1581 * walk on's.
1582 */ 1582 */
1583 for (object *tmp = op->more; tmp; tmp = tmp->more) 1583 for (object *tmp = op->more; tmp; tmp = tmp->more)
1584 if (check_move_on (tmp, originator, flag)) 1584 if (check_move_on (tmp, originator))
1585 return 0; 1585 return 0;
1586 } 1586 }
1587 1587
1588 return op; 1588 return op;
1589} 1589}
1815 * MSW 2001-07-08: Check all objects on space, not just those below 1815 * MSW 2001-07-08: Check all objects on space, not just those below
1816 * object being inserted. insert_ob_in_map may not put new objects 1816 * object being inserted. insert_ob_in_map may not put new objects
1817 * on top. 1817 * on top.
1818 */ 1818 */
1819int 1819int
1820check_move_on (object *op, object *originator, int flags) 1820check_move_on (object *op, object *originator)
1821{ 1821{
1822 if (op->flag [FLAG_NO_APPLY]) 1822 if (op->flag [FLAG_NO_APPLY])
1823 return 0; 1823 return 0;
1824 1824
1825 object *tmp; 1825 object *tmp;
1884 1884
1885 /* Basically same logic as above, except now for actual apply. */ 1885 /* Basically same logic as above, except now for actual apply. */
1886 if ((!op->move_type && tmp->move_on & MOVE_WALK) || 1886 if ((!op->move_type && tmp->move_on & MOVE_WALK) ||
1887 ((op->move_type & tmp->move_on) && (op->move_type & ~tmp->move_on & ~tmp->move_block) == 0)) 1887 ((op->move_type & tmp->move_on) && (op->move_type & ~tmp->move_on & ~tmp->move_block) == 0))
1888 { 1888 {
1889 if (tmp->type == EXIT && (flags & INS_NO_AUTO_EXIT)) //TODO: temporary, fix exits instead
1890 continue;
1891
1892 move_apply (tmp, op, originator); 1889 move_apply (tmp, op, originator);
1893 1890
1894 if (op->destroyed ()) 1891 if (op->destroyed ())
1895 return 1; 1892 return 1;
1896 1893

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines