Hi, this is the first module I post. I Hope that someone will find it useful.

A related question: I got a warnings.log because the dynamic sprites of the shadows cache aren't freed. I know that this isn't a memory leak, because it's a prefixed amount of sprites created once and never cleared.
To avoid the warnings I thought of adding a clear_cache function, but the user should manually call it before quit (AFAIK there's no game_quit handler like game_start, or anything similar).
By the way, I suppose that we can just ignore the warnings and be happy, 'cause the OS will free itself all the game memory when you quit it.
Of course I'm open to suggestions to improve the module

Get it here (demo game included, documentation in the script header):
http://www.duskzone.it/works/ags/EpicShadows.zipFrom the script header:
What did I change from the original 'Shadow' module by SSH?
The wonderful thing of the original Shadow module was that you just had to
import it and all your characters had cleverly drawn shadows
(with caching, scaling and depending on character dimensions).
By the way it had some major issues, pointed by the author itself:
- Animated background frames mess it up.
- Walkbehinds don't work on the shadow.
I managed to solve these issues drawing shadows to a DynamicSprite and
assigning it to a "dummy object".
Walkbehinds and animated backgrounds work (shadows are by default drawn
behind other stuff, the dummy object is set with Baseline 1), but the
drawback is that you have to put an object in every room where
you want shadows to make the module work.
So, if you don't have walkbehinds or animated backgrounds, go for the
original module.

If you have them, placing the dummy object in each room is boring, but
less boring and more functional (IMHO) that the other approaches to the
problem (like the one of the dummy shadow character with Follow_Exactly...
if you can have 5 characters in a room).
I did also another minor change: I scaled the shadow respect to the Character.Z.
I needed this with a flying character, to make the shadow gradually disappear
when he starts to float and gradually appear when he approaches the ground.
Another little improvement is the Shadow.SetScale function, to adjust the
dynamically calculated width of the shadow on a per character basis.
Warning: having a room-wide dynamic sprite was SLOW, so I optimized a bit
letting you define the "shadowable area" of a room when you put the
"dummy object".
In short, drag it such that its Y is above the walkable areas: no shadows
will be drawn above it.
This should work in the most common case of the walkable areas in the lower
part of the screen...
if you're coding a SpiderMan adventure and he walks on the ceiling, you might
need to change some lines of code to have better performances

The module scans for an object called "ModShadows" when you enter a room.
If he finds it, he creates the sprite and draws the shadows. If he doesn't,
nothing is done.
Letting the user disable shadows to have better performances is reasonable,
maybe from a "game settings" GUI, so you can toggle the feature on/off
with Shadow.SetActive(bool trueFalse). If you call Shadow.SetActive(false),
the "ModShadows" objects will be ignored (and made invisible, of course) and
no shadows will be drawn.
Other features should work exactly as in the original module.
Thankyou SSH!
Dusk