Sous l'eau on peux se noyer

Répondre
Partager Rechercher
J'ai fait un petit système pour mon mod qui simule quand les personnages sont sous l'eau. J'en avais besoin pour de grand étendue d'eau (mis en placable CEP) qui permettent aux PJ de passer en dessous.
Je le partage avec vous, n'hesitez pas a le modifier, a l'adapter, a l'améliorer, etc.

A placer sur un OnEnter (trigger ou zone) quand le PJ va trop profondément sous l'eau
Code PHP:

// l7c_underwater

void main()
{
object oPC GetEnteringObject();
effect eSlow EffectSlow();
int nCon GetAbilityModifier(ABILITY_CONSTITUTION,oPC);
SetLocalInt(oPC,"UnderWater",1);
ApplyEffectToObject(DURATION_TYPE_PERMANENT,eSlow,oPC);
DelayCommand(IntToFloat(nCon*6),ExecuteScript("l7c_noyade",oPC));

Celui-ci se lance quand le PJ est sous l'eau depuis trop longtemps
Code PHP:

/////////////////////////////////////////
//: l7c_noyade
// Si un PJ est rest trop longtemps sous l'eau,
// ce script se lance sur lui, et lui inflige des degats
/////////////////////////////////////////

void Noyade(object oPCint nDam 1)
{
if(
GetLocalInt(oPC,"UnderWater")!=1)
    {
    return;
    }
effect eDam EffectDamage(nDam,DAMAGE_TYPE_BLUDGEONING);
effect eVis EffectVisualEffect(VFX_IMP_FROST_S);
int nSave FortitudeSave(oPC,nDam+10,SAVING_THROW_TYPE_POISON);
if(
nSave == 0)
    {
    
ApplyEffectToObject(DURATION_TYPE_INSTANTeDamoPC);
    }
if(
nSave == || 1)
    {
    
ApplyEffectToObject(DURATION_TYPE_INSTANTeVisoPC);
    
DelayCommand(6.0,Noyade(oPC,nDam nDam));
    }
if(
nSave == 2)
    {
    return;
    }
}

void main()
{
object oPC OBJECT_SELF;
if(
GetLocalInt(oPC,"UnderWater")==1)
    {
    
Noyade(oPC);
    }

Celui-ci est a mettre dans la sortie du Trigger ou zone
Code PHP:

// l7c_OutOfWater

void main()
{
object oPC GetExitingObject();
DeleteLocalInt(oPC,"UnderWater");
effect eSlow GetFirstEffect(oPC);
while(
GetIsEffectValid(eSlow))
    {
    if(
GetEffectCreator(eSlow) == OBJECT_SELF)
        {
        
RemoveEffect(oPC,eSlow);
        }
    
eSlow GetNextEffect(oPC);
    }

Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés