Sadist

From IvanWiki
Jump to navigation Jump to search

Coding: This article contains code which is for experienced users only, and may reveal game secrets


IsSadist is a char.dat tag that designates the character as a sadist. A sadist character equipped with a sadist weapon (belt, whip, banana, banana peel, broken bottle, nut, bodypart) will randomly attack allied masochistic characters.

truth character::CheckSadism()
{
  if(!IsSadist() || !HasSadistAttackMode() || !IsSmall()) // gum
    return false;

  if(!RAND_N(10))
  {
    for(int d = 0; d < 8; ++d)
    {
      square* Square = GetNeighbourSquare(d);

      if(Square)
      {
	character* Char = Square->GetCharacter();

	if(Char && Char->IsMasochist() && GetRelation(Char) == FRIEND
	   && Char->GetHP() * 3 >= Char->GetMaxHP() * 2
	   && Hit(Char, Square->GetPos(), d, SADIST_HIT))
	{
	  TerminateGoingTo();
	  return true;
	}
      }
    }
  }

  return false;
}

Sadists