Auto-translated
Everything that exists in a campaign can be done on any map. You need to assign a script name to the catapult (for example, 'catapult'), and then rotate it (if needed):To fire:SetObjectRotation('catapult', ANGLE);Explosion upon impact:PlayObjectAnimation('catapult', 'rangeattack', ONESHOT);PlayVisualEffect('/Effects/_(Effect)/Spells/FireBallHit.xdb#xpointer(/Effect)', '', '', X, Y, 1, 0, GROUND);
Play2DSound('/Sounds/_(Sound)/Spells/FireBallHit.xdb#xpointer(/Sound)');
I think you should use the CheckOwner() function (or something similar, which checks the owner of the object) and call it in a thread, or after battles, or on a new day trigger.
Thank you;)