PTrigger Trigger::getMeteorShower(Creature* c, double duration) { return PTrigger(new MeteorShower(c, duration)); }
PTrigger Trigger::getTorch(Dir attachmentDir, Position position) { return PTrigger(new Torch(getTorchViewObject(attachmentDir), position)); }
PTrigger Trigger::getTrap(const ViewObject& obj, Position pos, EffectType e, Tribe* tribe, bool alwaysVisible) { return PTrigger(new Trap(obj, pos, std::move(e), tribe, alwaysVisible)); }
PTrigger Trigger::getPortal(const ViewObject& obj, Position position) { return PTrigger(new Portal(obj, position)); }
PTrigger Trigger::getPortal(const ViewObject& obj, Level* l, Vec2 position) { return PTrigger(new Portal(obj, l, position)); }
PTrigger Trigger::getTrap(const ViewObject& obj, Level* l, Vec2 position, EffectType effect, Tribe* tribe) { return PTrigger(new Trap(obj, l, position, std::move(effect), tribe)); }