Robot model number now changes colour strengths and weaknesses across all enemy body parts
This commit is contained in:
+82
-304
@@ -185,24 +185,35 @@ public class GMScript : MonoBehaviour
|
|||||||
EnemyKillSequence[i] != PartyColours[1] &&
|
EnemyKillSequence[i] != PartyColours[1] &&
|
||||||
EnemyKillSequence[i] != PartyColours[2] &&
|
EnemyKillSequence[i] != PartyColours[2] &&
|
||||||
EnemyKillSequence[i] != PartyColours[3] ||
|
EnemyKillSequence[i] != PartyColours[3] ||
|
||||||
(EnemyKillSequence[i] == ((EnemyKillSequence[i-1]+6)%12)));
|
(EnemyKillSequence[i] == EnemyKillSequence[i-1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
//print((Colours)EnemyKillSequence[i]);
|
//print((Colours)EnemyKillSequence[i]);
|
||||||
EnemyKillSequence[i] = (EnemyKillSequence[i]+6)%12;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}while(!SequenceCheck());
|
}while(!SequenceCheck());
|
||||||
|
|
||||||
// FOR DEBUGGING PURPOSES ONLY
|
modelNum = Random.Range(0, 4);
|
||||||
|
|
||||||
|
// CHANGES COLOUR OF KILL SEQUENCE DEPENDENT ON MODEL NUMBER
|
||||||
for(int i = 0; i < EnemyKillSequence.Length; i++)
|
for(int i = 0; i < EnemyKillSequence.Length; i++)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
switch(modelNum){
|
||||||
|
case(0):
|
||||||
|
EnemyKillSequence[i] = (EnemyKillSequence[i]+6)%12;
|
||||||
|
break;
|
||||||
|
case(1):
|
||||||
|
EnemyKillSequence[i] = (EnemyKillSequence[i]+3)%12;
|
||||||
|
break;
|
||||||
|
case(2):
|
||||||
|
EnemyKillSequence[i] = (EnemyKillSequence[i]+9)%12;
|
||||||
|
break;
|
||||||
|
}
|
||||||
print((Colours)EnemyKillSequence[i]);
|
print((Colours)EnemyKillSequence[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
modelNum = Random.Range(0, 5);
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
Divider.SetActive(true);
|
Divider.SetActive(true);
|
||||||
@@ -823,7 +834,8 @@ public class GMScript : MonoBehaviour
|
|||||||
|
|
||||||
// ATTACK MODIFIER BASED ON THE RELATION OF THE COLOUR OF THE PARTY MEMBER
|
// ATTACK MODIFIER BASED ON THE RELATION OF THE COLOUR OF THE PARTY MEMBER
|
||||||
// AND THE COLOUR OF THE ENEMY ROBOT BASE BODY COLOUR
|
// AND THE COLOUR OF THE ENEMY ROBOT BASE BODY COLOUR
|
||||||
switch(colourModifier)
|
|
||||||
|
switch(colourModifier)
|
||||||
{
|
{
|
||||||
case(2):
|
case(2):
|
||||||
modifier = 2;
|
modifier = 2;
|
||||||
@@ -1338,309 +1350,75 @@ public class GMScript : MonoBehaviour
|
|||||||
int ColourCompare(Colours AttackColour, Colours DefendColour)
|
int ColourCompare(Colours AttackColour, Colours DefendColour)
|
||||||
{
|
{
|
||||||
|
|
||||||
switch(AttackColour)
|
|
||||||
|
if(AttackColour != Colours.White &&
|
||||||
|
AttackColour != Colours.Grey &&
|
||||||
|
AttackColour != Colours.Black)
|
||||||
|
{
|
||||||
|
|
||||||
|
if(modelNum == 0 || modelNum == 3)
|
||||||
{
|
{
|
||||||
// WHITE, GREY AND BLACK ARE NEITHER WEAK NOR STRONG AGAINST
|
|
||||||
// DEFENDING COLOUR SINCE THEY ARE "NON-ATTACK" COLOURS
|
|
||||||
case Colours.White:
|
|
||||||
return 0;
|
|
||||||
case Colours.Grey:
|
|
||||||
return 0;
|
|
||||||
case Colours.Black:
|
|
||||||
return 0;
|
|
||||||
case Colours.Red:
|
|
||||||
// DEFEND COLOUR HAS STRONG DEFENSE IF ATTACK COLOUR IS SAME
|
|
||||||
if(DefendColour == AttackColour)
|
if(DefendColour == AttackColour)
|
||||||
{
|
{
|
||||||
return -2;
|
if(modelNum == 0) return -2;
|
||||||
}
|
else return 2;
|
||||||
// DEFEND COLOUR HAS GOOD DEFENSE IF ATTACK COLOUR IS AN ADJACENT COLOUR
|
}
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour-1)%12) ||
|
// DEFEND COLOUR HAS GOOD DEFENSE IF ATTACK COLOUR IS AN ADJACENT COLOUR
|
||||||
DefendColour == (Colours)(((int)AttackColour+1)%12))
|
else if (DefendColour == (Colours)(((int)AttackColour-1)%12) ||
|
||||||
{
|
DefendColour == (Colours)(((int)AttackColour+1)%12))
|
||||||
return -1;
|
{
|
||||||
}
|
if(modelNum == 0) return -1;
|
||||||
// DEFEND COLOUR HAS NO DEFENSE IF ATTACK COLOUR IS OPPOSITE
|
else return 1;
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour+6)%12))
|
}
|
||||||
{
|
// DEFEND COLOUR HAS NO DEFENSE IF ATTACK COLOUR IS OPPOSITE
|
||||||
return 2;
|
else if (DefendColour == (Colours)(((int)AttackColour+6)%12))
|
||||||
}
|
{
|
||||||
// DEFEND COLOUR HAS WEAK DEFENSE IF ATTACK COLOUR IS ADJACENT TO OPPOSITE COLOUR
|
if(modelNum == 0) return 2;
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour+5)%12) ||
|
else return -2;
|
||||||
DefendColour == (Colours)(((int)AttackColour+7)%12))
|
}
|
||||||
{
|
// DEFEND COLOUR HAS WEAK DEFENSE IF ATTACK COLOUR IS ADJACENT TO OPPOSITE COLOUR
|
||||||
return 1;
|
else if (DefendColour == (Colours)(((int)AttackColour+5)%12) ||
|
||||||
}
|
DefendColour == (Colours)(((int)AttackColour+7)%12))
|
||||||
break;
|
{
|
||||||
case Colours.Brown:
|
if(modelNum == 0) return 1;
|
||||||
// DEFEND COLOUR HAS STRONG DEFENSE IF ATTACK COLOUR IS SAME
|
else return -1;
|
||||||
if(DefendColour == AttackColour)
|
}
|
||||||
{
|
|
||||||
return -2;
|
} else {
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS GOOD DEFENSE IF ATTACK COLOUR IS AN ADJACENT COLOUR
|
if(DefendColour == (Colours)(((int)AttackColour+3)%12))
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour-1)%12) ||
|
{
|
||||||
DefendColour == (Colours)(((int)AttackColour+1)%12))
|
if(modelNum == 2) return -2;
|
||||||
{
|
else return 2;
|
||||||
return -1;
|
}
|
||||||
}
|
// DEFEND COLOUR HAS GOOD DEFENSE IF ATTACK COLOUR IS AN ADJACENT COLOUR
|
||||||
// DEFEND COLOUR HAS NO DEFENSE IF ATTACK COLOUR IS OPPOSITE
|
else if (DefendColour == (Colours)(((int)AttackColour+2)%12) ||
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour+6)%12))
|
DefendColour == (Colours)(((int)AttackColour+4)%12))
|
||||||
{
|
{
|
||||||
return 2;
|
if(modelNum == 2) return -1;
|
||||||
}
|
else return 1;
|
||||||
// DEFEND COLOUR HAS WEAK DEFENSE IF ATTACK COLOUR IS ADJACENT TO OPPOSITE COLOUR
|
}
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour+5)%12) ||
|
// DEFEND COLOUR HAS NO DEFENSE IF ATTACK COLOUR IS OPPOSITE
|
||||||
DefendColour == (Colours)(((int)AttackColour+7)%12))
|
else if (DefendColour == (Colours)(((int)AttackColour+9)%12))
|
||||||
{
|
{
|
||||||
return 1;
|
if(modelNum == 2) return 2;
|
||||||
}
|
else return -2;
|
||||||
break;
|
}
|
||||||
case Colours.Orange:
|
// DEFEND COLOUR HAS WEAK DEFENSE IF ATTACK COLOUR IS ADJACENT TO OPPOSITE COLOUR
|
||||||
// DEFEND COLOUR HAS STRONG DEFENSE IF ATTACK COLOUR IS SAME
|
else if (DefendColour == (Colours)(((int)AttackColour+8)%12) ||
|
||||||
if(DefendColour == AttackColour)
|
DefendColour == (Colours)(((int)AttackColour+10)%12))
|
||||||
{
|
{
|
||||||
return -2;
|
if(modelNum == 2) return 1;
|
||||||
}
|
else return -1;
|
||||||
// DEFEND COLOUR HAS GOOD DEFENSE IF ATTACK COLOUR IS AN ADJACENT COLOUR
|
}
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour-1)%12) ||
|
|
||||||
DefendColour == (Colours)(((int)AttackColour+1)%12))
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS NO DEFENSE IF ATTACK COLOUR IS OPPOSITE
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour+6)%12))
|
|
||||||
{
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS WEAK DEFENSE IF ATTACK COLOUR IS ADJACENT TO OPPOSITE COLOUR
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour+5)%12) ||
|
|
||||||
DefendColour == (Colours)(((int)AttackColour+7)%12))
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case Colours.Amber:
|
|
||||||
// DEFEND COLOUR HAS STRONG DEFENSE IF ATTACK COLOUR IS SAME
|
|
||||||
if(DefendColour == AttackColour)
|
|
||||||
{
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS GOOD DEFENSE IF ATTACK COLOUR IS AN ADJACENT COLOUR
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour-1)%12) ||
|
|
||||||
DefendColour == (Colours)(((int)AttackColour+1)%12))
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS NO DEFENSE IF ATTACK COLOUR IS OPPOSITE
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour+6)%12))
|
|
||||||
{
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS WEAK DEFENSE IF ATTACK COLOUR IS ADJACENT TO OPPOSITE COLOUR
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour+5)%12) ||
|
|
||||||
DefendColour == (Colours)(((int)AttackColour+7)%12))
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case Colours.Yellow:
|
|
||||||
// DEFEND COLOUR HAS STRONG DEFENSE IF ATTACK COLOUR IS SAME
|
|
||||||
if(DefendColour == AttackColour)
|
|
||||||
{
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS GOOD DEFENSE IF ATTACK COLOUR IS AN ADJACENT COLOUR
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour-1)%12) ||
|
|
||||||
DefendColour == (Colours)(((int)AttackColour+1)%12))
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS NO DEFENSE IF ATTACK COLOUR IS OPPOSITE
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour+6)%12))
|
|
||||||
{
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS WEAK DEFENSE IF ATTACK COLOUR IS ADJACENT TO OPPOSITE COLOUR
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour+5)%12) ||
|
|
||||||
DefendColour == (Colours)(((int)AttackColour+7)%12))
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case Colours.Lime:
|
|
||||||
// DEFEND COLOUR HAS STRONG DEFENSE IF ATTACK COLOUR IS SAME
|
|
||||||
if(DefendColour == AttackColour)
|
|
||||||
{
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS GOOD DEFENSE IF ATTACK COLOUR IS AN ADJACENT COLOUR
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour-1)%12) ||
|
|
||||||
DefendColour == (Colours)(((int)AttackColour+1)%12))
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS NO DEFENSE IF ATTACK COLOUR IS OPPOSITE
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour+6)%12))
|
|
||||||
{
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS WEAK DEFENSE IF ATTACK COLOUR IS ADJACENT TO OPPOSITE COLOUR
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour+5)%12) ||
|
|
||||||
DefendColour == (Colours)(((int)AttackColour+7)%12))
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case Colours.Green:
|
|
||||||
// DEFEND COLOUR HAS STRONG DEFENSE IF ATTACK COLOUR IS SAME
|
|
||||||
if(DefendColour == AttackColour)
|
|
||||||
{
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS GOOD DEFENSE IF ATTACK COLOUR IS AN ADJACENT COLOUR
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour-1)%12) ||
|
|
||||||
DefendColour == (Colours)(((int)AttackColour+1)%12))
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS NO DEFENSE IF ATTACK COLOUR IS OPPOSITE
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour+6)%12))
|
|
||||||
{
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS WEAK DEFENSE IF ATTACK COLOUR IS ADJACENT TO OPPOSITE COLOUR
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour+5)%12) ||
|
|
||||||
DefendColour == (Colours)(((int)AttackColour+7)%12))
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case Colours.Cyan:
|
|
||||||
// DEFEND COLOUR HAS STRONG DEFENSE IF ATTACK COLOUR IS SAME
|
|
||||||
if(DefendColour == AttackColour)
|
|
||||||
{
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS GOOD DEFENSE IF ATTACK COLOUR IS AN ADJACENT COLOUR
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour-1)%12) ||
|
|
||||||
DefendColour == (Colours)(((int)AttackColour+1)%12))
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS NO DEFENSE IF ATTACK COLOUR IS OPPOSITE
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour+6)%12))
|
|
||||||
{
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS WEAK DEFENSE IF ATTACK COLOUR IS ADJACENT TO OPPOSITE COLOUR
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour+5)%12) ||
|
|
||||||
DefendColour == (Colours)(((int)AttackColour+7)%12))
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case Colours.Blue:
|
|
||||||
// DEFEND COLOUR HAS STRONG DEFENSE IF ATTACK COLOUR IS SAME
|
|
||||||
if(DefendColour == AttackColour)
|
|
||||||
{
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS GOOD DEFENSE IF ATTACK COLOUR IS AN ADJACENT COLOUR
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour-1)%12) ||
|
|
||||||
DefendColour == (Colours)(((int)AttackColour+1)%12))
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS NO DEFENSE IF ATTACK COLOUR IS OPPOSITE
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour+6)%12))
|
|
||||||
{
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS WEAK DEFENSE IF ATTACK COLOUR IS ADJACENT TO OPPOSITE COLOUR
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour+5)%12) ||
|
|
||||||
DefendColour == (Colours)(((int)AttackColour+7)%12))
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case Colours.Indigo:
|
|
||||||
// DEFEND COLOUR HAS STRONG DEFENSE IF ATTACK COLOUR IS SAME
|
|
||||||
if(DefendColour == AttackColour)
|
|
||||||
{
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS GOOD DEFENSE IF ATTACK COLOUR IS AN ADJACENT COLOUR
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour-1)%12) ||
|
|
||||||
DefendColour == (Colours)(((int)AttackColour+1)%12))
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS NO DEFENSE IF ATTACK COLOUR IS OPPOSITE
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour+6)%12))
|
|
||||||
{
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS WEAK DEFENSE IF ATTACK COLOUR IS ADJACENT TO OPPOSITE COLOUR
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour+5)%12) ||
|
|
||||||
DefendColour == (Colours)(((int)AttackColour+7)%12))
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case Colours.Purple:
|
|
||||||
// DEFEND COLOUR HAS STRONG DEFENSE IF ATTACK COLOUR IS SAME
|
|
||||||
if(DefendColour == AttackColour)
|
|
||||||
{
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS GOOD DEFENSE IF ATTACK COLOUR IS AN ADJACENT COLOUR
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour-1)%12) ||
|
|
||||||
DefendColour == (Colours)(((int)AttackColour+1)%12))
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS NO DEFENSE IF ATTACK COLOUR IS OPPOSITE
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour+6)%12))
|
|
||||||
{
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS WEAK DEFENSE IF ATTACK COLOUR IS ADJACENT TO OPPOSITE COLOUR
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour+5)%12) ||
|
|
||||||
DefendColour == (Colours)(((int)AttackColour+7)%12))
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case Colours.Pink:
|
|
||||||
// DEFEND COLOUR HAS STRONG DEFENSE IF ATTACK COLOUR IS SAME
|
|
||||||
if(DefendColour == AttackColour)
|
|
||||||
{
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS GOOD DEFENSE IF ATTACK COLOUR IS AN ADJACENT COLOUR
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour-1)%12) ||
|
|
||||||
DefendColour == (Colours)(((int)AttackColour+1)%12))
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS NO DEFENSE IF ATTACK COLOUR IS OPPOSITE
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour+6)%12))
|
|
||||||
{
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
// DEFEND COLOUR HAS WEAK DEFENSE IF ATTACK COLOUR IS ADJACENT TO OPPOSITE COLOUR
|
|
||||||
else if (DefendColour == (Colours)(((int)AttackColour+5)%12) ||
|
|
||||||
DefendColour == (Colours)(((int)AttackColour+7)%12))
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// IF AN ATTACKING COLOUR DOESN'T MATCH WITH ANY OF THE ABOVE PARAMETERS
|
// IF AN ATTACKING COLOUR DOESN'T MATCH WITH ANY OF THE ABOVE PARAMETERS
|
||||||
|
// (OR ATTACKING ROBOT IS AN ABILITY COLOUR)
|
||||||
// IT IS NEITHER WEAK NOR STRONG AGAINST THE DEFENDING COLOUR
|
// IT IS NEITHER WEAK NOR STRONG AGAINST THE DEFENDING COLOUR
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user