33using Smod2 . EventHandlers ;
44using Smod2 . Events ;
55using System . Collections . Generic ;
6+ using System . IO ;
67using System . Threading ;
78using UnityEngine ;
9+ using UnityEngine . Networking ;
810
911namespace VirtualBrightPlayz . SCPSL . Mod11
1012{
@@ -35,31 +37,34 @@ void IEventHandlerCheckEscape.OnCheckEscape(PlayerCheckEscapeEvent ev)
3537 //ev.ChangeRole = Smod2.API.Role.CHAOS_INSUGENCY;
3638 }
3739
38- void GetRooms ( )
40+ void GetRooms ( bool lczd = false )
3941 {
4042 var lczrooms = GameObject . Find ( "LightRooms" ) . transform ;
41- var hczrooms = GameObject . Find ( "Heavy rooms " ) . transform ;
43+ var hczrooms = GameObject . Find ( "HeavyRooms " ) . transform ;
4244 var ezrooms = GameObject . Find ( "EntranceRooms" ) . transform ;
4345 rooms = new List < Transform > ( ) ;
44- for ( int i = 0 ; i < lczrooms . childCount ; i ++ )
46+ if ( ! lczd )
4547 {
46- Transform room = lczrooms . GetChild ( i ) ;
47- Vector3 pos = new Vector3 ( lczrooms . position . x , room . position . y , lczrooms . position . y ) ;
48- if ( room . name . StartsWith ( "Root_" ) && Vector3 . Distance ( pos , room . position ) < MinDist && ! room . name . Contains ( "173" ) )
49- rooms . Add ( room ) ;
48+ for ( int i = 0 ; i < lczrooms . childCount ; i ++ )
49+ {
50+ Transform room = lczrooms . GetChild ( i ) ;
51+ Vector3 pos = new Vector3 ( lczrooms . position . x , room . position . y , lczrooms . position . y ) ;
52+ if ( room . name . StartsWith ( "Root_" ) && Vector3 . Distance ( pos , room . position ) < MinDist && ! room . name . Contains ( "173" ) && ! room . name . Contains ( "Armory" ) )
53+ rooms . Add ( room ) ;
54+ }
5055 }
5156 for ( int i = 0 ; i < hczrooms . childCount ; i ++ )
5257 {
5358 Transform room = hczrooms . GetChild ( i ) ;
5459 Vector3 pos = new Vector3 ( hczrooms . position . x , room . position . y , hczrooms . position . y ) ;
55- if ( room . name . StartsWith ( "Root_" ) && Vector3 . Distance ( pos , room . position ) < MinDist && ! room . name . Contains ( "Tesla" ) )
60+ if ( room . name . StartsWith ( "Root_" ) && Vector3 . Distance ( pos , room . position ) < MinDist && ! room . name . Contains ( "Tesla" ) && ! room . name . Contains ( "Room3ar" ) )
5661 rooms . Add ( room ) ;
5762 }
5863 for ( int i = 0 ; i < ezrooms . childCount ; i ++ )
5964 {
6065 Transform room = ezrooms . GetChild ( i ) ;
6166 Vector3 pos = new Vector3 ( ezrooms . position . x , room . position . y , ezrooms . position . y ) ;
62- if ( room . name . StartsWith ( "Root_" ) && Vector3 . Distance ( pos , room . position ) < MinDist && ! room . name . Contains ( "Shelter" ) && ! room . name . Contains ( "CollapsedTunnel" ) )
67+ if ( room . name . StartsWith ( "Root_" ) && Vector3 . Distance ( pos , room . position ) < MinDist && ! room . name . Contains ( "Shelter" ) && ! room . name . Contains ( "CollapsedTunnel" ) && ! room . name . Contains ( "GateB" ) && ! room . name . Contains ( "GateA" ) )
6368 rooms . Add ( room ) ;
6469 }
6570 }
@@ -77,35 +82,15 @@ void IEventHandlerRoundStart.OnRoundStart(RoundStartEvent ev)
7782 // ammo7.Add(player.SteamId, player.GetAmmo(AmmoType.DROPPED_7));
7883 // ammo9.Add(player.SteamId, player.GetAmmo(AmmoType.DROPPED_9));
7984 //}
80- if ( rooms == null )
85+ GameObject . FindObjectOfType < Broadcast > ( ) . CallRpcAddElement ( "<size=50>Welcome Subject D-[Redacted]</size>" , 3 , true ) ;
86+ GameObject . FindObjectOfType < Broadcast > ( ) . CallRpcAddElement ( "<size=20><color=#fca714>You have been selected to fight against other Class-D Personnel.\n " +
87+ "This is a fight to the death, and you must be the last survivor in order to be released from the facility.\n " +
88+ "Supplies have been placed around the facility, and are free to use.</color></size>" , 10 , true ) ;
89+ GameObject . FindObjectOfType < Broadcast > ( ) . CallRpcAddElement ( "<size=100>Good Luck!</size>" , 2 , true ) ;
90+ if ( rooms == null || true )
8191 {
8292 GetRooms ( ) ;
8393 }
84- var lczrooms = GameObject . Find ( "LightRooms" ) . transform ;
85- var hczrooms = GameObject . Find ( "Heavy rooms" ) . transform ;
86- var ezrooms = GameObject . Find ( "EntranceRooms" ) . transform ;
87- rooms = new List < Transform > ( ) ;
88- for ( int i = 0 ; i < lczrooms . childCount ; i ++ )
89- {
90- Transform room = lczrooms . GetChild ( i ) ;
91- Vector3 pos = new Vector3 ( lczrooms . position . x , room . position . y , lczrooms . position . y ) ;
92- if ( room . name . StartsWith ( "Root_" ) && Vector3 . Distance ( pos , room . position ) < MinDist && ! room . name . Contains ( "173" ) && ! room . name . Contains ( "Armory" ) )
93- rooms . Add ( room ) ;
94- }
95- for ( int i = 0 ; i < hczrooms . childCount ; i ++ )
96- {
97- Transform room = hczrooms . GetChild ( i ) ;
98- Vector3 pos = new Vector3 ( hczrooms . position . x , room . position . y , hczrooms . position . y ) ;
99- if ( room . name . StartsWith ( "Root_" ) && Vector3 . Distance ( pos , room . position ) < MinDist && ! room . name . Contains ( "Tesla" ) && ! room . name . Contains ( "Room3ar" ) )
100- rooms . Add ( room ) ;
101- }
102- for ( int i = 0 ; i < ezrooms . childCount ; i ++ )
103- {
104- Transform room = ezrooms . GetChild ( i ) ;
105- Vector3 pos = new Vector3 ( ezrooms . position . x , room . position . y , ezrooms . position . y ) ;
106- if ( room . name . StartsWith ( "Root_" ) && Vector3 . Distance ( pos , room . position ) < MinDist && ! room . name . Contains ( "Shelter" ) && ! room . name . Contains ( "CollapsedTunnel" ) && ! room . name . Contains ( "GateB" ) && ! room . name . Contains ( "GateA" ) )
107- rooms . Add ( room ) ;
108- }
10994 players = new List < string > ( ) ;
11095 foreach ( var player in mod11 . Server . GetPlayers ( ) )
11196 {
@@ -141,31 +126,15 @@ void IEventHandlerRoundStart.OnRoundStart(RoundStartEvent ev)
141126
142127 void IEventHandlerLCZDecontaminate . OnDecontaminate ( )
143128 {
144- var hczrooms = GameObject . Find ( "Heavy rooms" ) . transform ;
145- var ezrooms = GameObject . Find ( "EntranceRooms" ) . transform ;
146- rooms = new List < Transform > ( ) ;
147- for ( int i = 0 ; i < hczrooms . childCount ; i ++ )
148- {
149- Transform room = hczrooms . GetChild ( i ) ;
150- Vector3 pos = new Vector3 ( hczrooms . position . x , room . position . y , hczrooms . position . y ) ;
151- if ( room . name . StartsWith ( "Root_" ) && Vector3 . Distance ( pos , room . position ) < MinDist && ! room . name . Contains ( "Tesla" ) )
152- rooms . Add ( room ) ;
153- }
154- for ( int i = 0 ; i < ezrooms . childCount ; i ++ )
155- {
156- Transform room = ezrooms . GetChild ( i ) ;
157- Vector3 pos = new Vector3 ( ezrooms . position . x , room . position . y , ezrooms . position . y ) ;
158- if ( room . name . StartsWith ( "Root_" ) && Vector3 . Distance ( pos , room . position ) < MinDist && ! room . name . Contains ( "Shelter" ) && ! room . name . Contains ( "CollapsedTunnel" ) )
159- rooms . Add ( room ) ;
160- }
129+ GetRooms ( true ) ;
161130 }
162131
163132 void IEventHandlerSpawn . OnSpawn ( PlayerSpawnEvent ev )
164133 {
165- if ( rooms == null )
134+ /* if (rooms == null)
166135 {
167136 GetRooms();
168- }
137+ }*/
169138 }
170139
171140 void IEventHandlerRoundEnd . OnRoundEnd ( RoundEndEvent ev )
@@ -182,13 +151,15 @@ void IEventHandlerCheckRoundEnd.OnCheckRoundEnd(CheckRoundEndEvent ev)
182151 if ( player . TeamRole . Role == Role . CLASSD )
183152 roles . Add ( player . TeamRole . Role ) ;
184153 }
185- if ( roles . Count > 1 )
154+ if ( roles . Count > 1 && ! hasended )
186155 {
187156 ev . Status = ROUND_END_STATUS . ON_GOING ;
188157 }
189158 else
190159 {
160+ //ev.Status = ROUND_END_STATUS.ON_GOING;
191161 ev . Status = ROUND_END_STATUS . CI_VICTORY ;
162+ ev . Round . EndRound ( ) ;
192163 }
193164 }
194165
@@ -226,7 +197,11 @@ void IEventHandlerSetRole.OnSetRole(PlayerSetRoleEvent ev)
226197 if ( ev . Role == Role . CLASSD || ev . TeamRole . Team == Smod2 . API . Team . SCP || ev . TeamRole . Team == Smod2 . API . Team . NONE || ev . TeamRole . Team == Smod2 . API . Team . TUTORIAL || ev . TeamRole . Team == Smod2 . API . Team . SPECTATOR )
227198 { }
228199 else
229- ev . Role = Role . CHAOS_INSUGENCY ;
200+ {
201+ ev . Player . ChangeRole ( Role . CHAOS_INSURGENCY ) ;
202+ ev . Items . Add ( ItemType . O5_LEVEL_KEYCARD ) ;
203+ GameObject . FindObjectOfType < Broadcast > ( ) . CallTargetAddElement ( ( ( GameObject ) ev . Player . GetGameObject ( ) ) . GetComponent < NetworkIdentity > ( ) . connectionToClient , "<color=#00ff00>Kill the Class-D Personnel, or not.</color>" , 5 , true ) ;
204+ }
230205 }
231206
232207 void IEventHandlerUpdate . OnUpdate ( UpdateEvent ev )
@@ -237,22 +212,26 @@ void IEventHandlerUpdate.OnUpdate(UpdateEvent ev)
237212 if ( player . TeamRole . Role == Role . CLASSD )
238213 roles . Add ( player . Name ) ;
239214 }
215+ if ( roles . Count == 2 && ! hasended && roundstarted && ! GameObject . FindObjectOfType < AlphaWarheadController > ( ) . inProgress && ! GameObject . FindObjectOfType < AlphaWarheadController > ( ) . detonated )
216+ {
217+ GameObject . FindObjectOfType < AlphaWarheadController > ( ) . StartDetonation ( ) ;
218+ }
240219 if ( roles . Count == 1 && ! hasended && roundstarted )
241220 {
221+ GameObject . FindObjectOfType < Broadcast > ( ) . CallRpcAddElement ( "<size=70><color=#ff0000>Winner: " + roles [ 0 ] + "</color></size>" , 10 , true ) ;
242222 foreach ( Player player in mod11 . Server . GetPlayers ( ) )
243223 {
244224 player . SendConsoleMessage ( roles [ 0 ] + " Wins!" , "red" ) ;
245225 }
246- mod11 . Server . Round . EndRound ( ) ;
247226 hasended = true ;
248227 }
249228 else if ( roles . Count < 1 && ! hasended && roundstarted )
250229 {
230+ GameObject . FindObjectOfType < Broadcast > ( ) . CallRpcAddElement ( "<size=70><color=#ff0000>No one wins.</color></size>" , 10 , true ) ;
251231 foreach ( Player player in mod11 . Server . GetPlayers ( ) )
252232 {
253233 player . SendConsoleMessage ( "No one wins." , "red" ) ;
254234 }
255- mod11 . Server . Round . EndRound ( ) ;
256235 hasended = true ;
257236 }
258237 /*foreach (GameObject obj in GameObject.FindGameObjectsWithTag("Pickup"))
@@ -297,21 +276,25 @@ void IEventHandlerPlayerJoin.OnPlayerJoin(PlayerJoinEvent ev)
297276 {
298277 foreach ( var player in mod11 . Server . GetPlayers ( ) )
299278 {
300- //mod11.Info(rooms.Count.ToString());
301- int roomnumber = Random . Range ( 0 , rooms . Count ) ;
302- Vector3 roompos = rooms [ roomnumber ] . position ;
303- //plugin.Info(rooms[roomnumber].name);
304- player . Teleport ( new Smod2 . API . Vector ( roompos . x , roompos . y + 2f , roompos . z ) ) ;
305- player . GiveItem ( Smod2 . API . ItemType . ZONE_MANAGER_KEYCARD ) ;
306- players . Add ( player . SteamId ) ;
279+ if ( player . SteamId == ev . Player . SteamId )
280+ {
281+ //mod11.Info(rooms.Count.ToString());
282+ int roomnumber = Random . Range ( 0 , rooms . Count ) ;
283+ Vector3 roompos = rooms [ roomnumber ] . position ;
284+ //plugin.Info(rooms[roomnumber].name);
285+ player . ChangeRole ( Role . CLASSD ) ;
286+ player . Teleport ( new Smod2 . API . Vector ( roompos . x , roompos . y + 2f , roompos . z ) ) ;
287+ player . GiveItem ( Smod2 . API . ItemType . ZONE_MANAGER_KEYCARD ) ;
288+ players . Add ( player . SteamId ) ;
289+ }
307290 }
308291 }
309292 }
310293 }
311294
312295 void IEventHandlerPlayerHurt . OnPlayerHurt ( PlayerHurtEvent ev )
313296 {
314- if ( ev . Attacker . TeamRole . Role == Role . CHAOS_INSUGENCY && ev . Player . TeamRole . Role == Role . CHAOS_INSUGENCY )
297+ if ( ev . Attacker . TeamRole . Role == Role . CHAOS_INSURGENCY && ev . Player . TeamRole . Role == Role . CHAOS_INSURGENCY )
315298 {
316299 ev . Damage = 0 ;
317300 }
0 commit comments