764 |
|
|
765 |
/** \page st-wood Wooden Stone |
/** \page st-wood Wooden Stone |
766 |
|
|
767 |
This stone is movable. If moved into abyss or water it will |
This stone is movable. If moved into abyss, water or swamp it builds |
768 |
disappear and change into a wooden plank. |
a wooden plank. |
769 |
|
|
770 |
\subsection woode Example |
\subsection woode Example |
771 |
\verbatim |
\verbatim |
772 |
set_stone("st-wood", 10,10) |
set_stone("st-wood", 10,10) |
773 |
\endverbatim |
\endverbatim |
774 |
|
|
775 |
|
Note: There are two flavors of st-wood which may be specified |
776 |
|
by using st-wood1 or st-wood2. |
777 |
|
|
778 |
\image html st-wood.png |
\image html st-wood.png |
779 |
*/ |
*/ |
780 |
namespace |
namespace |
782 |
class WoodenStone : public MovableStone { |
class WoodenStone : public MovableStone { |
783 |
CLONEOBJ(WoodenStone); |
CLONEOBJ(WoodenStone); |
784 |
public: |
public: |
785 |
WoodenStone() : MovableStone("st-wood") {} |
WoodenStone(const char *kind) : MovableStone(kind) {} |
786 |
|
|
787 |
private: |
private: |
788 |
|
|
789 |
|
// When st-wood is created it randomly becomes st-wood1 or st-wood2. |
790 |
|
void on_creation() { |
791 |
|
if (is_kind("st-wood")) { |
792 |
|
GridPos p = get_pos(); |
793 |
|
KillStone(p); |
794 |
|
SetStone(p, MakeStone(IntegerRand(0, 1) ? "st-wood1" : "st-wood2")); |
795 |
|
return; |
796 |
|
} |
797 |
|
MovableStone::on_creation(); |
798 |
|
} |
799 |
|
|
800 |
void fall() { |
void fall() { |
801 |
if (Floor *fl=GetFloor(get_pos())) { |
if (Floor *fl=GetFloor(get_pos())) { |
802 |
const string &k = fl->get_kind(); |
const string &k = fl->get_kind(); |
803 |
if (k == "fl-abyss" || k=="fl-water" || k=="fl-swamp") { |
if (k == "fl-abyss" || k=="fl-water" || k=="fl-swamp") { |
804 |
SetFloor(get_pos(), MakeFloor("fl-wood")); |
SetFloor(get_pos(), MakeFloor(is_kind("st-wood1") ? "fl-stwood1" : "fl-stwood2")); |
805 |
KillStone(get_pos()); |
KillStone(get_pos()); |
806 |
} |
} |
807 |
} |
} |
826 |
private: |
private: |
827 |
void init_model() { set_anim("st-wood-growing"); } |
void init_model() { set_anim("st-wood-growing"); } |
828 |
void animcb() { |
void animcb() { |
829 |
Stone *st = world::MakeStone("st-wood"); |
Stone *st = world::MakeStone("st-wood1"); |
830 |
world::SetStone(get_pos(), st); |
world::SetStone(get_pos(), st); |
831 |
} |
} |
832 |
}; |
}; |
2065 |
|
|
2066 |
Register(new Window); |
Register(new Window); |
2067 |
|
|
2068 |
Register(new WoodenStone); |
Register(new WoodenStone("st-wood")); // random flavor |
2069 |
|
Register(new WoodenStone("st-wood1")); // horizontal planks |
2070 |
|
Register(new WoodenStone("st-wood2")); // vertical planks |
2071 |
Register(new WoodenStone_Growing); |
Register(new WoodenStone_Growing); |
2072 |
|
|
2073 |
Register(new YinYangStone1); |
Register(new YinYangStone1); |