… | |
… | |
1793 | bool |
1793 | bool |
1794 | fire (object *op, int dir) |
1794 | fire (object *op, int dir) |
1795 | { |
1795 | { |
1796 | int spellcost = 0; |
1796 | int spellcost = 0; |
1797 | |
1797 | |
1798 | /* check for loss of invisiblity/hide */ |
|
|
1799 | if (action_makes_visible (op)) |
|
|
1800 | make_visible (op); |
|
|
1801 | |
|
|
1802 | player *pl = op->contr; |
1798 | player *pl = op->contr; |
1803 | |
1799 | |
1804 | if (pl->golem) |
1800 | if (pl->golem) |
1805 | { |
1801 | { |
1806 | control_golem (op->contr->golem, dir); |
1802 | control_golem (op->contr->golem, dir); |
… | |
… | |
1808 | } |
1804 | } |
1809 | |
1805 | |
1810 | object *ob = pl->ranged_ob; |
1806 | object *ob = pl->ranged_ob; |
1811 | |
1807 | |
1812 | if (!ob) |
1808 | if (!ob) |
1813 | return false; |
|
|
1814 | |
|
|
1815 | if (!op->change_weapon (ob)) |
|
|
1816 | return false; |
1809 | return false; |
1817 | |
1810 | |
1818 | if (op->speed_left > 0.f) |
1811 | if (op->speed_left > 0.f) |
1819 | --op->speed_left; |
1812 | --op->speed_left; |
1820 | else |
1813 | else |
1821 | return false; |
1814 | return false; |
|
|
1815 | |
|
|
1816 | if (!op->change_weapon (ob)) |
|
|
1817 | return false; |
|
|
1818 | |
|
|
1819 | /* check for loss of invisiblity/hide */ |
|
|
1820 | if (action_makes_visible (op)) |
|
|
1821 | make_visible (op); |
1822 | |
1822 | |
1823 | switch (ob->type) |
1823 | switch (ob->type) |
1824 | { |
1824 | { |
1825 | case BOW: |
1825 | case BOW: |
1826 | player_fire_bow (op, dir); |
1826 | player_fire_bow (op, dir); |