class Animal : SodObject {
int tickles = 0;
- void tickle(void) { }
+ void tickle();
[role = before]
- void nml.tickle(void) { me->nml.tickles++; }
+ void nml.tickle() { me->nml.tickles++; }
}
class Lion : Animal {
- void bite(void) { puts("Munch!"); }
- void nml.tickle(void) { me->_vt->lion.bite(me); }
+ void bite() { puts("Munch!"); }
+ void nml.tickle() { me->_vt->lion.bite(me); }
}
class Goat : Animal {
- void butt(void) { puts("Bonk!"); }
- void nml.tickle(void) { me->_vt->goat.butt(me); }
+ void butt() { puts("Bonk!"); }
+ void nml.tickle() { me->_vt->goat.butt(me); }
}
class Serpent : Animal {
- void hiss(void) { puts("Sssss!"); }
- void bite(void) { puts("Nom!"); }
- void nml.tickle(void) {
+ void hiss() { puts("Sssss!"); }
+ void bite() { puts("Nom!"); }
+ void nml.tickle() {
if (SERPENT__CONV_NML(me)->nml.tickles > 2) me->_vt->serpent.bite(me);
else me->_vt->serpent.hiss(me);
}