public class BuffMindControl : Buff
{
public BuffMindControl(BuffData info) : base(info)
{
}
private const ulong kMindControlBuff =0xD3C61BD7B1BAF4A4;
public static ulong StaticGuid
{
get
{
return 0xD3C61BD7B1BAF4A4;
}
}
public override void OnAddition(BuffManager bm, BuffInstance bi, bool travelReaddition)
{
Sim actor = bm.Actor;
BuffInstanceMindControl servitude = bi as BuffInstanceMindControl;
servitude.ServitudeVfx = VisualEffect.Create("ep8AlienMesmerizeFx");
servitude.ServitudeVfx.ParentTo(actor, Sim.FXJoints.Head);
servitude.ServitudeVfx.Start();
VisitSituation.SetVisitToGreeted(actor);
VisitSituation situation = VisitSituation.FindVisitSituationInvolvingGuest(actor);
if (situation != null)
{
situation.RemoveCheck(actor, CheckType.InappropriateForVisitor);
situation.RemoveCheck(actor, CheckType.SelfRegarding);
}
Motives motives = actor.Motives;
motives.CreateMotive(CommodityKind.BeRepairman);
motives.CreateMotive(CommodityKind.BeMaid);
base.OnAddition(bm, bi, travelReaddition);
}
public override BuffInstance CreateBuffInstance()
{
return new BuffInstanceMindControl(this, BuffGuid, base.EffectValue, base.TimeoutSimMinutes);
}
public override void OnTimeout(BuffManager bm, BuffInstance bi, Buff.OnTimeoutReasons reason)
{
Sim actor = bm.Actor;
BuffInstanceMindControl servitude = bi as BuffInstanceMindControl;
if (servitude.ServitudeVfx != null)
{
servitude.ServitudeVfx.Dispose();
}
Motives motives = actor.Motives;
motives.RemoveMotive(CommodityKind.BeRepairman);
motives.RemoveMotive(CommodityKind.BeMaid);
(bi as BuffInstanceMindControl).Dispose(bm);
if (!actor.IsInActiveHousehold)
{
Sim.MakeSimGoHome(actor, false);
}
}
public override void OnRemoval(BuffManager bm, BuffInstance bi)
{
Sim actor = bm.Actor;
BuffInstanceMindControl servitude = bi as BuffInstanceMindControl;
if (servitude.ServitudeVfx != null)
{
servitude.ServitudeVfx.Dispose();
}
Motives motives = actor.Motives;
motives.RemoveMotive(CommodityKind.BeRepairman);
motives.RemoveMotive(CommodityKind.BeMaid);
(bi as BuffInstanceMindControl).Dispose(bm);
if (!actor.IsInActiveHousehold)
{
Sim.MakeSimGoHome(actor, false);
}
}
public class BuffInstanceMindControl : BuffInstance
{
public bool mHasTriggered;
public SimDescription mMasterSim;
public VisualEffect ServitudeVfx;
public BuffInstanceMindControl()
{
}
public BuffInstanceMindControl(Buff buff, BuffNames buffGuid, int effectValue, float timeoutCount) : base(buff, buffGuid, effectValue, timeoutCount)
{
}
public override BuffInstance Clone()
{
return new BuffMindControl.BuffInstanceMindControl(base.mBuff, base.mBuffGuid, base.mEffectValue, base.mTimeoutCount);
}
}
}
|