123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- //Christmas Event: Santa's Sleigh
- class Wreck_SantasSleigh extends CrashBase
- {
- XmasSleighLight m_SleighLight;
-
- int m_MaxDeersAmount = 4;
- int m_MinDeersAmount = 2;
- int m_MaxDeersSpawnRange = 25;
- int m_MinDeersSpawnRange = 5;
- void Wreck_SantasSleigh()
- {
- if (!GetGame().IsDedicatedServer())
- {
- //particles - Aurora trail
- m_ParticleEfx = ParticleManager.GetInstance().PlayOnObject(ParticleList.AURORA_SANTA_WRECK,this,vector.Zero,vector.Zero,true);
-
- //lights - green light
- m_SleighLight = XmasSleighLight.Cast(ScriptedLightBase.CreateLight(XmasSleighLight,vector.Zero));
- m_SleighLight.AttachOnMemoryPoint(this, "light");
- }
- }
-
- // needs to have the soundset registered in CrashBase.Init()
- override string GetSoundSet()
- {
- return "SledgeCrash_Distant_SoundSet";
- }
-
- override void EEOnCECreate()
- {
- super.EEOnCECreate();
- SpawnRandomDeerLater();
- }
-
- override void EEDelete(EntityAI parent)
- {
- super.EEDelete(parent);
-
- if ( !GetGame().IsDedicatedServer() )
- {
- if ( m_SleighLight )
- m_SleighLight.Destroy();
- }
- }
-
- void SpawnRandomDeerLater()
- {
- //SpawnRandomDeers();
- GetGame().GetCallQueue( CALL_CATEGORY_GAMEPLAY ).CallLater( SpawnRandomDeers, 0);
- }
-
- //Spawn a random amount of (dead) deers around the sleigh
- void SpawnRandomDeers()
- {
- EntityAI deer;
- vector crash_pos = GetPosition();
-
- int deersAmount = Math.RandomIntInclusive(m_MinDeersAmount,m_MaxDeersAmount);
-
- for (int i = 0; i < m_MaxDeersAmount; i++)
- {
- vector deer_pos = RandomizePosition(crash_pos);
- deer = EntityAI.Cast(GetGame().CreateObject("Animal_RangiferTarandus", deer_pos,false, true));
- deer.SetHealth01("","", 0);
- vector orientation = deer.GetOrientation();
- deer.SetOrientation(Vector(Math.RandomIntInclusive(0,360),orientation[1],orientation[2]));
- }
-
- //spawns xmas reindeer
- deer_pos = RandomizePosition(crash_pos);
- deer = EntityAI.Cast(GetGame().CreateObject("Animal_RangiferTarandus_Xmas", deer_pos,false, true));
- deer.SetHealth01("","", 0);
- vector redorientation = deer.GetOrientation();
- deer.SetOrientation(Vector(Math.RandomIntInclusive(0,360),redorientation[1],redorientation[2]));
-
- }
-
- //Return a new vector scattered around origin.
- vector RandomizePosition(vector origin)
- {
- int randX;
- int randZ;
-
- randX = Math.RandomIntInclusive(m_MinDeersSpawnRange, m_MaxDeersSpawnRange);
- if (Math.RandomIntInclusive(0,1) < 1)
- randX = -randX;
-
- randZ = Math.RandomIntInclusive(m_MinDeersSpawnRange, m_MaxDeersSpawnRange);
- if (Math.RandomIntInclusive(0,1) < 1)
- randZ = -randZ;
-
- origin[0] = origin[0] + randX;
- origin[2] = origin[2] + randZ;
-
- return origin;
-
- }
- }
|