@@ -17,7 +17,7 @@ namespace ExtendedItems.Items
1717 public class Coin : CustomItem
1818 {
1919 public override string Name { get ; set ; } = "SCP-1289" ;
20- public override uint Id { get ; set ; } = 804 ;
20+ public override uint Id { get ; set ; } = 4 ;
2121 public override string Description { get ; set ; } = "<i>\" What's the most you ever lost on a coin toss?\" </i>" ;
2222 public override float Weight { get ; set ; } = 1f ;
2323
@@ -65,34 +65,64 @@ private void OnFlippingCoin(FlippingCoinEventArgs ev)
6565 {
6666 if ( ! Check ( ev . Item ) ) return ;
6767
68- Timing . CallDelayed ( 2f , ( ) =>
69- {
70- if ( ev . IsTails && ! ev . Player . IsDead )
68+ Timing . CallDelayed ( 2f ,
69+ ( ) =>
7170 {
72- ev . Player . Scale = Vector3 . zero ;
73- var cause = Plugin . Instance ? . Config . LoseCauses . RandomItem ( ) ?? "<Error: Coin Reason Not Found>" ;
74- var ragdoll = Ragdoll . CreateAndSpawn ( ev . Player . Role . Type , ev . Player . DisplayNickname ,
75- new CustomReasonDamageHandler ( $ "{ cause } ") ,
76- ev . Player . Position , ev . Player . Rotation , ev . Player ) ;
71+ if ( ev . IsTails )
72+ {
73+ if ( ev . Player . ActiveEffects . Any ( targetActiveEffect => targetActiveEffect . name == nameof ( EffectType . AntiScp207 ) ) )
74+ {
75+ Log . Debug ( $ "{ ev . Player . Nickname } had Anti-207") ;
76+ ev . Player . Explode ( ProjectileType . FragGrenade , ev . Player ) ;
77+ }
78+ else
79+ {
80+ Log . Debug ( "Coin Landed on tails" ) ;
81+ ev . Player . Scale = Vector3 . zero ;
82+ Log . Debug ( $ "Scaling { ev . Player . Nickname } to zero") ;
7783
78- ev . Player . IsGodModeEnabled = false ;
84+ // ReSharper disable once InconsistentNaming
85+ var _temp = Plugin . Instance ? . Config . LoseCauses . RandomItem ( ) ??
86+ "<Error: Coin Reason Not Found>" ;
87+
88+ string cause = _temp . Any ( char . IsWhiteSpace ) ? $ "the words { _temp } are etched into the scalp" : $ "the word { _temp } is etched in the scalp";
89+ Ragdoll . CreateAndSpawn ( ev . Player . Role . Type ,
90+ ev . Player . DisplayNickname ,
91+ new CustomReasonDamageHandler ( cause ) ,
92+ ev . Player . Position ,
93+ ev . Player . Rotation ,
94+ ev . Player ) ;
7995
80- ev . Player . ExplodeEffect ( ProjectileType . FragGrenade ) ;
81- ev . Player . Kill ( $ "{ cause } ") ;
82- ev . Player . Scale = Vector3 . one ;
83- return ;
84- }
96+ ev . Player . IsGodModeEnabled = false ;
8597
86- ev . Player . ShowHint ( $ "{ Plugin . Instance ? . Config . WinHints . RandomItem ( ) } ") ;
98+ Log . Debug ( "Spawning Grenade" ) ;
99+ Utils . Exploding ( ev . Player ) ;
100+ ev . Player . Kill ( cause ) ;
101+ }
102+ }
103+ else
104+ {
105+ ev . Player . ShowHint ( $ "{ Plugin . Instance ? . Config . WinHints . RandomItem ( ) } ") ;
87106
88- Effects . ForEach ( effect =>
89- {
90- ev . Player . EnableEffect ( effect . Type , effect . Intensity , effect . Duration , true ) ;
107+ if ( ev . Player . Health + ev . Player . ArtificialHealth < ev . Player . MaxHealth / 2 )
108+ {
109+ ev . Player . AddRegeneration ( duration : 10 , rate : 5 ) ;
110+ }
111+ else
112+ {
113+ Effects . ForEach ( effect =>
114+ {
115+ ev . Player . EnableEffect ( effect . Type ,
116+ effect . Intensity ,
117+ effect . Duration ,
118+ true ) ;
119+ } ) ;
120+ }
121+ }
91122 } ) ;
92- } ) ;
93123 }
94124
95- private void OnRoleChanging ( ChangingRoleEventArgs ev )
125+ private static void OnRoleChanging ( ChangingRoleEventArgs ev )
96126 {
97127 ev . Player . Scale = Vector3 . one ;
98128 ev . Player . DisableAllEffects ( ) ;
0 commit comments