typos
[k8-i-v-a-n.git] / src / game / humans / humanoid_oree.cpp
blob3b650f521416656419e3a69ab879b77ce86ab5fb
1 #ifdef HEADER_PHASE
2 CHARACTER(oree, humanoid)
4 public:
5 virtual void Bite(character*, v2, int, truth = false);
6 virtual void GetAICommand();
7 protected:
8 virtual cchar* FirstPersonBiteVerb() const;
9 virtual cchar* FirstPersonCriticalBiteVerb() const;
10 virtual cchar* ThirdPersonBiteVerb() const;
11 virtual cchar* ThirdPersonCriticalBiteVerb() const;
12 virtual cchar* BiteNoun() const;
13 void CallForMonsters();
17 #else
21 cchar* oree::FirstPersonBiteVerb() const { return "vomit acidous blood at"; }
25 cchar* oree::FirstPersonCriticalBiteVerb() const { return "vomit very acidous blood at"; }
29 cchar* oree::ThirdPersonBiteVerb() const { return "vomits acidous blood at"; }
33 cchar* oree::ThirdPersonCriticalBiteVerb() const { return "vomits very acidous blood at"; }
37 cchar* oree::BiteNoun() const { return "liquid"; }
41 void oree::Bite(character* Enemy, v2 HitPos, int, truth)
43 if(IsPlayer())
44 ADD_MESSAGE("You vomit acidous blood at %s.", Enemy->CHAR_DESCRIPTION(DEFINITE));
45 else if(Enemy->IsPlayer() || CanBeSeenByPlayer() || Enemy->CanBeSeenByPlayer())
46 ADD_MESSAGE("%s vomits acidous blood at %s.", CHAR_DESCRIPTION(DEFINITE), Enemy->CHAR_DESCRIPTION(DEFINITE));
48 Vomit(HitPos, 500 + RAND() % 500, false);
53 void oree::GetAICommand()
55 if(!RAND_N(50))
56 CallForMonsters();
58 humanoid::GetAICommand();
63 void oree::CallForMonsters()
65 //if (GetDungeon()->GetIndex() != ELPURI_CAVE || GetLevel()->GetIndex() != OREE_LAIR) return;
66 //if (!GetLevel()->IsGCOreeLevel()) return;
67 if (!IsHomeLevel(GetLevel())) return;
69 character* ToBeCalled = 0;
71 switch(RAND_N(6))
73 case 0:
74 ToBeCalled = darkknight::Spawn(ELITE);
75 break;
76 case 1:
77 ToBeCalled = frog::Spawn(RAND_2 ? GREATER_DARK : GIANT_DARK);
78 break;
79 case 2:
80 ToBeCalled = frog::Spawn(DARK);
81 break;
82 case 3:
83 ToBeCalled = darkmage::Spawn(RAND_2 ? APPRENTICE : BATTLE_MAGE);
84 break;
85 case 4:
86 ToBeCalled = darkmage::Spawn(RAND_2 ? APPRENTICE : ELDER);
87 break;
88 case 5:
89 ToBeCalled = necromancer::Spawn(RAND_2 ? APPRENTICE_NECROMANCER : MASTER_NECROMANCER);
90 break;
93 v2 TryToCreate;
95 for(int c = 0; c < 100; ++c)
97 TryToCreate = game::GetMonsterPortal()->GetPos() + game::GetMoveVector(RAND() % DIRECTION_COMMAND_KEYS);
99 if(GetArea()->IsValidPos(TryToCreate) && ToBeCalled->CanMoveOn(GetNearLSquare(TryToCreate)) && ToBeCalled->IsFreeForMe(GetNearLSquare(TryToCreate)))
101 ToBeCalled->SetTeam(game::GetTeam(MONSTER_TEAM));
102 ToBeCalled->PutTo(TryToCreate);
103 return;
107 delete ToBeCalled;
109 #endif