… | |
… | |
1730 | int adjustdir; |
1730 | int adjustdir; |
1731 | maptile *m; |
1731 | maptile *m; |
1732 | #endif |
1732 | #endif |
1733 | object *owner = op->env; |
1733 | object *owner = op->env; |
1734 | |
1734 | |
|
|
1735 | if (!owner) // MUST not happen, remove when true TODO |
|
|
1736 | { |
|
|
1737 | LOG (llevError, "swarm spell found outside inventory: %s\n", op->debug_desc ()); |
|
|
1738 | op->destroy (); |
|
|
1739 | return; |
|
|
1740 | } |
|
|
1741 | |
1735 | if (!op->duration || !owner->is_on_map ()) |
1742 | if (!op->duration || !owner->is_on_map ()) |
1736 | { |
1743 | { |
1737 | op->destroy (); |
1744 | op->destroy (); |
1738 | return; |
1745 | return; |
1739 | } |
1746 | } |
… | |
… | |
1846 | |
1853 | |
1847 | tmp->duration = SP_level_duration_adjust (caster, spell); |
1854 | tmp->duration = SP_level_duration_adjust (caster, spell); |
1848 | for (int i = 0; i < spell->duration; i++) |
1855 | for (int i = 0; i < spell->duration; i++) |
1849 | tmp->duration += die_roll (1, 3, op, PREFER_HIGH); |
1856 | tmp->duration += die_roll (1, 3, op, PREFER_HIGH); |
1850 | |
1857 | |
|
|
1858 | tmp->invisible = 1; |
|
|
1859 | tmp->flag [FLAG_NO_DROP] = 1; // make sure it stays in inv, or else |
1851 | tmp->direction = dir; |
1860 | tmp->direction = dir; |
1852 | tmp->invisible = 1; |
|
|
1853 | tmp->facing = rndm (1, 8); // initial firing direction |
1861 | tmp->facing = rndm (1, 8); // initial firing direction |
1854 | tmp->state = rndm (4) * 2 + 1; // direction increment |
1862 | tmp->state = rndm (4) * 2 + 1; // direction increment |
1855 | |
1863 | |
1856 | op->insert (tmp); |
1864 | op->insert (tmp); |
1857 | |
1865 | |