Throw Chaos
Throw Chaos
bool DisableThrowning = false; // missile will not collide do any damage and will
be decelerated (if thrown). might not work in close distances
int RandomProb = 1; //
if (CreateFireCircleOnImpact || CreateExplosionOnImpact ||
CreateRandomImpact)
{
IObjectTimerTrigger Timer0 =
(IObjectTimerTrigger)Game.CreateObject("TimerTrigger");
Timer0.SetIntervalTime(75);
Timer0.SetRepeatCount(0);
Timer0.SetScriptMethod("veryfast");
Timer0.Trigger();
}
IObjectTimerTrigger Timer =
(IObjectTimerTrigger)Game.CreateObject("TimerTrigger");
Timer.SetIntervalTime(100);
Timer.SetRepeatCount(0);
Timer.SetScriptMethod("fast");
Timer.Trigger();
IObjectTimerTrigger Timer2 =
(IObjectTimerTrigger)Game.CreateObject("TimerTrigger");
Timer2.SetIntervalTime(400);
if (CreateRandomImpact)
{
Timer2.SetIntervalTime(100);
}
Timer2.SetRepeatCount(0);
Timer2.SetScriptMethod("slow");
Timer2.Trigger();
if (GiveWeaponDefault)
{
IObjectTimerTrigger Timer3 =
(IObjectTimerTrigger)Game.CreateObject("TimerTrigger");
Timer3.SetIntervalTime(250);
Timer3.SetRepeatCount(0);
if (ThrownWeaponsClass.Contains(DefaultWeapon))
{
Timer3.SetScriptMethod("mid1");
}
if (RifleWeaponsClass.Contains(DefaultWeapon))
{
Timer3.SetScriptMethod("mid2");
}
if (HandWeaponsClass.Contains(DefaultWeapon))
{
Timer3.SetScriptMethod("mid3");
}
if (MeleeWeaponsClass.Contains(DefaultWeapon))
{
Timer3.SetScriptMethod("mid4");
}
if (MakeShiftWeaponsClass.Contains(DefaultWeapon))
{
Timer3.SetScriptMethod("mid5");
}
Timer3.Trigger();
}
}
public void fast(TriggerArgs args)
{
foreach (IObject missile in Game.GetMissileObjects())
{
if (missile is IObjectWeaponItem)
{
float speed = 100;
if ((speed > 1 || ((IObjectWeaponItem)missile).WeaponItemType ==
WeaponItemType.Rifle) && !(missile.CustomId == "ScriptMarkedMissile") && (!
(ThrownWeapons.Contains(missile.Name)) || AccelerateThrownWeapons) && !
DisableThrowning)
{
missile.SetLinearVelocity(missile.GetLinearVelocity() *
ThrowSpeedMulitpy);
missile.CustomId = "ScriptMarkedMissile";
if ((CreateFireCircleOnImpact || CreateExplosionOnImpact))
{
IObjectTargetObjectJoint targetjoint =
(IObjectTargetObjectJoint)Game.CreateObject("TargetObjectJoint",
missile.GetWorldPosition(), 0f, missile.GetLinearVelocity(),
missile.GetAngularVelocity());
targetjoint.SetTargetObject(missile);
targetjoint.CustomId = "destructjoint";
}
if (CreateRandomImpact && rand.Next(0, RandomProb) == 0)
{
int x = rand.Next(0,
25); //////////////////////////////////
IObjectTargetObjectJoint targetjoint =
(IObjectTargetObjectJoint)Game.CreateObject("TargetObjectJoint",
missile.GetWorldPosition(), 0f, missile.GetLinearVelocity(),
missile.GetAngularVelocity());
targetjoint.SetTargetObject(missile);
if (x < 25)
{
targetjoint.CustomId = "Minejoint";
missile.SetLinearVelocity(missile.GetLinearVelocity() * 1.5f);
IObjectTimerTrigger Timer =
(IObjectTimerTrigger)Game.CreateObject("TimerTrigger");
Timer.SetIntervalTime(500);
Timer.SetRepeatCount(1);
Timer.SetScriptMethod("Mine");
Timer.Trigger();
missile.SetLinearVelocity(missile.GetLinearVelocity() * 1.5f);
IObjectTimerTrigger Timer =
(IObjectTimerTrigger)Game.CreateObject("TimerTrigger");
Timer.SetIntervalTime(250);
Timer.SetRepeatCount(1);
Timer.SetScriptMethod("grenade");
Timer.Trigger();
missile.SetLinearVelocity(missile.GetLinearVelocity() * 1.5f);
IObjectTimerTrigger Timer =
(IObjectTimerTrigger)Game.CreateObject("TimerTrigger");
Timer.SetIntervalTime(250);
Timer.SetRepeatCount(1);
Timer.SetScriptMethod("bazooka");
Timer.Trigger();
}
if (x <= 2)
{
targetjoint.CustomId = "Electricjoint";
missile.SetLinearVelocity(missile.GetLinearVelocity() * 1.5f);
}
}
if (IncreaseMeleeWeaponMass &&
((IObjectWeaponItem)missile).WeaponItemType == WeaponItemType.Melee)
{
missile.SetMass((float)0.8);
}
}
if ((CreateFireCircleOnImpact || CreateExplosionOnImpact) &&
speed < 4 && missile.CustomId == "ScriptMarkedMissile")
{
missile.TrackAsMissile(false);
}
if (DisableThrownWeaponsCollision || DisableThrowning)
{
if (ThrownWeapons.Contains(missile.Name))
{
missile.TrackAsMissile(false);
}
}
if (DisableThrowning)
{
missile.TrackAsMissile(false);
if (speed > 5)
{
missile.SetLinearVelocity(missile.GetLinearVelocity()
/ 3);
}
}
if (joint.GetTargetObject() == null)
{
if (CreateFireCircleOnImpact)
{
Game.SpawnFireNodes(joint.GetWorldPosition(), 75,
joint.GetLinearVelocity(), 2, 2, FireNodeType.Flamethrower);
joint.Destroy();
}
if (CreateExplosionOnImpact)
{
Game.TriggerExplosion(joint.GetWorldPosition());
joint.Destroy();
}
}
}