First question is too lower/raise Daniel's Sanity.
To lower, use this.
GiveSanityDamage(float afAmount, bool abUseEffect);
afAmount - The amount of sanity you want to lower. Max is 100. Make sure to put .f behind every float, like this "2.5f"
abUseEffect - Determines whether you want a screen effect or not. True means "Screen Effect" while False means nothing.
///-------------------------///
To raise, use this.
AddPlayerSanity(float afSanity);
afSanity - The amount of sanity you want to raise. Same as above but this one raises it, not lowering it.
Second question is to drain oil from the lantern.
To drain, use this.
SetPlayerLampOil(float afOil);
afOil - The amount of oil you want. Max is 100.
Third question (and maybe NOT the last) is to play a sound and a music at the same time when colliding with a script area.
To do that, use this.
void OnStart()
{
AddEntityCollideCallback("Player", "ScriptAreaName", "SoundMusicPlay", true, 1);
}
void SoundMusicPlay(string &in asParent, string &in asChild, int alState)
{
PlayMusic(MUSICNAME.ogg, true, 1, 1, 1, false);
PlaySoundAtEntity("", MUSICNAME.snt, "Player", 0.1f, false); //An .snt is a properties of a music file.
}
Hope this helps.