renamed alot of types; hope this will not break the game
[k8-i-v-a-n.git] / src / game / human.h
blob6c3fae48ac85ed848e3f1397b14b3ad5e7c1b2a9
1 /*
3 * Iter Vehemens ad Necem (IVAN)
4 * Copyright (C) Timo Kiviluoto
5 * Released under the GNU General
6 * Public License
8 * See LICENSING which should be included
9 * along with this file for more details
13 #ifndef __HUMAN_H__
14 #define __HUMAN_H__
16 #include "char.h"
18 CHARACTER(humanoid, character)
20 public:
21 friend class rightarm;
22 friend class leftarm;
23 public:
24 humanoid () : CurrentRightSWeaponSkill(0), CurrentLeftSWeaponSkill(0) { }
25 humanoid (const humanoid &);
26 virtual ~humanoid ();
27 virtual truth CanWield () const;
28 virtual truth Hit (character *, v2, int, int = 0);
29 virtual int GetSize () const;
30 head *GetHead () const { return static_cast<head*>(*BodyPartSlot[HEAD_INDEX]); }
31 arm *GetRightArm () const { return static_cast<arm*>(*BodyPartSlot[RIGHT_ARM_INDEX]); }
32 arm *GetLeftArm () const { return static_cast<arm*>(*BodyPartSlot[LEFT_ARM_INDEX]); }
33 groin *GetGroin () const { return static_cast<groin*>(*BodyPartSlot[GROIN_INDEX]); }
34 leg *GetRightLeg () const { return static_cast<leg*>(*BodyPartSlot[RIGHT_LEG_INDEX]); }
35 leg *GetLeftLeg () const { return static_cast<leg*>(*BodyPartSlot[LEFT_LEG_INDEX]); }
36 item *GetHelmet () const { return GetHead() ? GetHead()->GetHelmet() : 0; }
37 item *GetAmulet () const { return GetHead() ? GetHead()->GetAmulet() : 0; }
38 item *GetCloak () const { return GetHumanoidTorso() ? GetHumanoidTorso()->GetCloak() : 0; }
39 item *GetBodyArmor () const { return GetHumanoidTorso() ? GetHumanoidTorso()->GetBodyArmor() : 0; }
40 item *GetBelt () const { return GetHumanoidTorso() ? GetHumanoidTorso()->GetBelt() : 0; }
41 item *GetRightWielded () const { return GetRightArm() ? GetRightArm()->GetWielded() : 0; }
42 item *GetLeftWielded () const { return GetLeftArm() ? GetLeftArm()->GetWielded() : 0; }
43 item *GetRightRing () const { return GetRightArm() ? GetRightArm()->GetRing() : 0; }
44 item *GetLeftRing () const { return GetLeftArm() ? GetLeftArm()->GetRing() : 0; }
45 item *GetRightGauntlet () const { return GetRightArm() ? GetRightArm()->GetGauntlet() : 0; }
46 item *GetLeftGauntlet () const { return GetLeftArm() ? GetLeftArm()->GetGauntlet() : 0; }
47 item *GetRightBoot () const { return GetRightLeg() ? GetRightLeg()->GetBoot() : 0; }
48 item *GetLeftBoot () const { return GetLeftLeg() ? GetLeftLeg()->GetBoot() : 0; }
49 void SetHelmet (item *What) { GetHead()->SetHelmet(What); }
50 void SetAmulet (item *What) { GetHead()->SetAmulet(What); }
51 void SetCloak (item *What) { GetHumanoidTorso()->SetCloak(What); }
52 void SetBodyArmor (item *What) { GetHumanoidTorso()->SetBodyArmor(What); }
53 void SetBelt (item *What) { GetHumanoidTorso()->SetBelt(What); }
54 void SetRightWielded (item *What) { GetRightArm()->SetWielded(What); }
55 void SetLeftWielded (item *What) { GetLeftArm()->SetWielded(What); }
56 void SetRightRing (item *What) { GetRightArm()->SetRing(What); }
57 void SetLeftRing (item *What) { GetLeftArm()->SetRing(What); }
58 void SetRightGauntlet (item *What) { GetRightArm()->SetGauntlet(What); }
59 void SetLeftGauntlet (item *What) { GetLeftArm()->SetGauntlet(What); }
60 void SetRightBoot (item *What) { GetRightLeg()->SetBoot(What); }
61 void SetLeftBoot (item *What) { GetLeftLeg()->SetBoot(What); }
62 arm *GetMainArm () const;
63 arm *GetSecondaryArm () const;
64 virtual truth ReceiveDamage(character*, int, int, int = ALL, int = 8, truth = false, truth = false, truth = false, truth = true);
65 virtual truth BodyPartIsVital(int) const;
66 virtual truth BodyPartCanBeSevered(int) const;
67 virtual item* GetMainWielded() const;
68 virtual item* GetSecondaryWielded() const;
69 virtual cchar* GetEquipmentName(int) const;
70 virtual bodypart* GetBodyPartOfEquipment(int) const;
71 virtual item* GetEquipment(int) const;
72 virtual int GetEquipments() const { return 13; }
73 virtual void SwitchToDig(item*, v2);
74 virtual int GetUsableLegs() const;
75 virtual int GetUsableArms() const;
76 virtual truth CheckKick() const;
77 virtual int OpenMultiplier() const;
78 virtual int CloseMultiplier() const;
79 virtual truth CheckThrow() const;
80 virtual truth CheckThrowItemOpportunity();
81 virtual truth CheckOffer() const;
82 virtual sorter EquipmentSorter(int) const;
83 virtual void SetEquipment(int, item*);
84 virtual void DrawSilhouette(truth) const;
85 virtual int GetGlobalResistance(int) const;
86 virtual truth TryToRiseFromTheDead();
87 virtual truth HandleNoBodyPart(int);
88 virtual void Kick(lsquare*, int, truth = false);
89 virtual double GetTimeToKill(ccharacter*, truth) const;
90 virtual int GetAttribute(int, truth = true) const;
91 virtual truth EditAttribute(int, int);
92 virtual void EditExperience(int, double, double);
93 virtual int DrawStats(truth) const;
94 virtual void Bite(character*, v2, int, truth = false);
95 virtual int GetCarryingStrength() const;
96 virtual int GetRandomStepperBodyPart() const;
97 virtual int CheckForBlock(character*, item*, double, int, int, int);
98 virtual truth AddSpecialSkillInfo(felist&) const;
99 virtual truth CheckBalance(double);
100 virtual sLong GetMoveAPRequirement(int) const;
101 virtual v2 GetEquipmentPanelPos(int) const;
102 virtual truth EquipmentEasilyRecognized(int) const;
103 sweaponskill* GetCurrentRightSWeaponSkill() const { return CurrentRightSWeaponSkill; }
104 void SetCurrentRightSWeaponSkill(sweaponskill* What) { CurrentRightSWeaponSkill = What; }
105 sweaponskill* GetCurrentLeftSWeaponSkill() const { return CurrentLeftSWeaponSkill; }
106 void SetCurrentLeftSWeaponSkill(sweaponskill* What) { CurrentLeftSWeaponSkill = What; }
107 virtual void SWeaponSkillTick();
108 virtual void Save(outputfile&) const;
109 virtual void Load(inputfile&);
110 virtual void SignalEquipmentAdd(int);
111 virtual void SignalEquipmentRemoval(int, citem*);
112 virtual void DrawBodyParts(blitdata&) const;
113 virtual truth CanUseStethoscope(truth) const;
114 virtual truth IsUsingArms() const;
115 virtual truth IsUsingLegs() const;
116 virtual truth IsUsingHead() const;
117 virtual void CalculateBattleInfo();
118 virtual void CalculateBodyParts();
119 virtual void CalculateAllowedWeaponSkillCategories();
120 virtual truth HasALeg() const { return HasAUsableLeg(); }
121 virtual void AddSpecialEquipmentInfo(festring&, int) const;
122 virtual void CreateInitialEquipment(int);
123 virtual festring GetBodyPartName(int, truth = false) const;
124 virtual void CreateBlockPossibilityVector(blockvector&, double) const;
125 virtual item* SevereBodyPart(int, truth = false, stack* = 0);
126 virtual int GetSWeaponSkillLevel(citem*) const;
127 virtual truth UseMaterialAttributes() const;
128 virtual void CalculateDodgeValue();
129 virtual truth CheckZap();
130 virtual truth IsHumanoid() const { return true; }
131 virtual truth CheckTalk();
132 virtual truth CheckIfEquipmentIsNotUsable(int) const;
133 virtual void AddSpecialStethoscopeInfo(felist&) const;
134 virtual item* GetPairEquipment(int) const;
135 virtual truth HasHead() const { return truth(GetHead()); }
136 virtual cfestring& GetStandVerb() const;
137 virtual head* Behead();
138 virtual void AddAttributeInfo(festring&) const;
139 virtual void AddAttackInfo(felist&) const;
140 virtual void AddDefenceInfo(felist&) const;
141 virtual void DetachBodyPart();
142 virtual int GetRandomApplyBodyPart() const;
143 void EnsureCurrentSWeaponSkillIsCorrect(sweaponskill*&, citem*);
144 virtual int GetSumOfAttributes() const;
145 virtual truth CheckConsume(cfestring&) const;
146 virtual truth CanConsume(material*) const;
147 virtual truth PreProcessForBone();
148 virtual void FinalProcessForBone();
149 virtual void StayOn(liquid*);
150 virtual head* GetVirtualHead() const { return GetHead(); }
151 virtual character* CreateZombie() const;
152 virtual void LeprosyHandler();
153 virtual void DropRandomNonVitalBodypart();
154 virtual void DropBodyPart(int);
155 virtual void DuplicateEquipment(character*, uLong);
156 virtual int GetAttributeAverage() const;
157 virtual truth CanVomit() const;
158 virtual truth CheckApply() const;
159 virtual truth CanForceVomit() const { return TorsoIsAlive() && HasAUsableArm(); }
160 virtual truth IsTransparent() const;
161 virtual void ModifySituationDanger(double&) const;
162 virtual int RandomizeTryToUnStickBodyPart(uLong) const;
163 virtual truth AllowUnconsciousness() const;
164 virtual truth CanChokeOnWeb(web*) const;
165 virtual truth BrainsHurt() const;
166 virtual cchar* GetRunDescriptionLine(int) const;
167 virtual cchar* GetNormalDeathMessage() const;
168 virtual void ApplySpecialAttributeBonuses();
169 virtual truth MindWormCanPenetrateSkull(mindworm*) const;
170 truth HasSadistWeapon() const;
171 virtual truth HasSadistAttackMode() const;
172 protected:
173 virtual v2 GetBodyPartBitmapPos(int, truth = false) const;
174 virtual col16 GetBodyPartColorB(int, truth = false) const;
175 virtual col16 GetBodyPartColorC(int, truth = false) const;
176 virtual col16 GetBodyPartColorD(int, truth = false) const;
177 virtual int GetBodyPartSparkleFlags(int) const;
178 virtual sLong GetBodyPartSize(int, int) const;
179 virtual sLong GetBodyPartVolume(int) const;
180 virtual bodypart* MakeBodyPart(int) const;
181 virtual cfestring& GetDeathMessage() const;
182 virtual v2 GetDrawDisplacement(int) const { return ZERO_V2; }
183 truth HasAUsableArm() const;
184 truth HasAUsableLeg() const;
185 truth HasTwoUsableLegs() const;
186 truth CanAttackWithAnArm() const;
187 truth RightArmIsUsable() const;
188 truth LeftArmIsUsable() const;
189 truth RightLegIsUsable() const;
190 truth LeftLegIsUsable() const;
191 std::list<sweaponskill*> SWeaponSkill;
192 sweaponskill* CurrentRightSWeaponSkill;
193 sweaponskill* CurrentLeftSWeaponSkill;
194 static cint DrawOrder[];
197 CHARACTER(playerkind, humanoid)
199 public:
200 playerkind();
201 playerkind(const playerkind&);
202 virtual void Save(outputfile&) const;
203 virtual void Load(inputfile&);
204 virtual void SetSoulID(uLong);
205 virtual truth SuckSoul(character*);
206 virtual truth TryToRiseFromTheDead();
207 virtual void FinalProcessForBone();
208 virtual void BeTalkedTo();
209 virtual truth IsHuman() const { return true; }
210 virtual col16 GetHairColor() const { return HairColor; }
211 virtual col16 GetEyeColor() const { return EyeColor; }
212 virtual v2 GetHeadBitmapPos() const;
213 virtual v2 GetRightArmBitmapPos() const;
214 virtual v2 GetLeftArmBitmapPos() const;
215 virtual int GetNaturalSparkleFlags() const;
216 virtual truth IsPlayerKind() const { return true; }
217 virtual double GetNaturalExperience(int) const;
218 protected:
219 virtual bodypart* MakeBodyPart(int) const;
220 virtual void PostConstruct();
221 uLong SoulID;
222 col16 HairColor;
223 col16 EyeColor;
224 int Talent;
225 int Weakness;
226 truth IsBonePlayer;
227 truth IsClone;
230 CHARACTER(petrus, humanoid)
232 public:
233 petrus();
234 virtual ~petrus();
235 virtual void Save(outputfile&) const;
236 virtual void Load(inputfile&);
237 virtual void BeTalkedTo();
238 truth HealFully(character*);
239 virtual void FinalProcessForBone();
240 virtual truth MoveTowardsHomePos();
241 protected:
242 virtual void CreateCorpse(lsquare*);
243 virtual void GetAICommand();
244 uLong LastHealed;
247 CHARACTER(farmer, humanoid)
249 public:
250 virtual v2 GetHeadBitmapPos() const;
251 virtual v2 GetRightArmBitmapPos() const;
252 virtual v2 GetLeftArmBitmapPos() const { return GetRightArmBitmapPos(); }
255 CHARACTER(guard, humanoid)
257 public:
258 guard() : NextWayPoint(0) { }
259 virtual void Save(outputfile&) const;
260 virtual void Load(inputfile&);
261 virtual void GetAICommand();
262 virtual void SetWayPoints(const fearray<packv2>&);
263 virtual truth MoveTowardsHomePos();
264 virtual void BeTalkedTo();
265 protected:
266 std::vector<v2> WayPoints;
267 uInt NextWayPoint;
270 CHARACTER(shopkeeper, humanoid)
272 public:
273 shopkeeper();
274 protected:
275 virtual void GetAICommand() { StandIdleAI(); }
278 CHARACTER(priest, humanoid)
280 protected:
281 virtual void GetAICommand () { StandIdleAI(); }
282 virtual void BeTalkedTo ();
285 CHARACTER(exiledpriest, priest)
287 public:
288 exiledpriest ();
289 virtual ~exiledpriest ();
290 virtual void Save (outputfile &) const;
291 virtual void Load (inputfile &);
292 virtual void BeTalkedTo ();
293 virtual truth MoveTowardsHomePos ();
294 protected:
295 virtual void GetAICommand ();
296 void healBodyParts ();
297 void healDeseases ();
298 void healAll ();
299 protected:
300 truth mAtHome;
303 CHARACTER(oree, humanoid)
305 public:
306 virtual void Bite(character*, v2, int, truth = false);
307 virtual void GetAICommand();
308 protected:
309 virtual cchar* FirstPersonBiteVerb() const;
310 virtual cchar* FirstPersonCriticalBiteVerb() const;
311 virtual cchar* ThirdPersonBiteVerb() const;
312 virtual cchar* ThirdPersonCriticalBiteVerb() const;
313 virtual cchar* BiteNoun() const;
314 void CallForMonsters();
317 CHARACTER(darkknight, humanoid)
319 protected:
320 virtual int ModifyBodyPartHitPreference(int, int) const;
321 virtual int ModifyBodyPartToHitChance(int, int) const;
322 virtual truth CanPanicFromSeveredBodyPart() const { return false; }
323 virtual void SpecialBodyPartSeverReaction();
326 CHARACTER(ennerbeast, humanoid)
328 public:
329 virtual truth Hit(character*, v2, int, int = 0);
330 virtual truth MustBeRemovedFromBone() const;
331 protected:
332 virtual bodypart* MakeBodyPart(int) const;
333 virtual void GetAICommand();
334 virtual truth AttackIsBlockable(int) const { return false; }
337 CHARACTER(skeleton, humanoid)
339 public:
340 virtual void BeTalkedTo();
341 virtual item* SevereBodyPart(int, truth = false, stack* = 0);
342 virtual truth BodyPartIsVital(int) const;
343 virtual sLong GetBodyPartVolume(int) const;
344 protected:
345 virtual void CreateCorpse(lsquare*);
348 CHARACTER(goblin, humanoid)
352 CHARACTER(golem, humanoid)
354 public:
355 golem();
356 virtual truth MoveRandomly();
357 virtual truth CheckForUsefulItemsOnGround(truth = true) { return false; }
358 virtual void BeTalkedTo();
359 virtual void Save(outputfile&) const;
360 virtual void Load(inputfile&);
361 void SetItemVolume(sLong What) { ItemVolume = What; }
362 protected:
363 virtual truth AddAdjective(festring&, truth) const;
364 virtual material* CreateBodyPartMaterial(int, sLong) const;
365 virtual void CreateCorpse(lsquare*);
366 sLong ItemVolume;
369 CHARACTER(communist, humanoid)
371 public:
372 virtual truth MoveRandomly();
373 virtual void BeTalkedTo();
374 virtual truth BoundToUse(citem*, int) const;
375 virtual truth MustBeRemovedFromBone() const;
376 protected:
377 virtual truth ShowClassDescription() const;
380 CHARACTER(hunter, humanoid)
382 public:
383 virtual void BeTalkedTo();
384 protected:
385 virtual void CreateBodyParts(int);
388 CHARACTER(slave, playerkind)
390 public:
391 virtual void BeTalkedTo();
392 virtual void GetAICommand();
393 virtual col16 GetHairColor() const { return humanoid::GetHairColor(); }
394 virtual col16 GetEyeColor() const { return humanoid::GetEyeColor(); }
395 protected:
396 virtual void PostConstruct();
399 CHARACTER(petrusswife, humanoid)
401 public:
402 petrusswife() : GiftTotal(0) { }
403 virtual truth MoveRandomly() { return MoveRandomlyInRoom(); }
404 virtual truth SpecialEnemySightedReaction(character*);
405 virtual void Save(outputfile&) const;
406 virtual void Load(inputfile&);
407 virtual void BeTalkedTo();
408 protected:
409 int GiftTotal;
412 CHARACTER(housewife, humanoid)
414 public:
415 virtual truth SpecialEnemySightedReaction(character*);
416 protected:
417 virtual int GetHairColor() const;
418 virtual v2 GetHeadBitmapPos() const;
421 CHARACTER(femaleslave, humanoid)
423 public:
424 virtual void BeTalkedTo();
425 protected:
426 virtual void GetAICommand() { StandIdleAI(); }
429 CHARACTER(librarian, humanoid)
431 public:
432 virtual void BeTalkedTo();
433 protected:
434 virtual void GetAICommand() { StandIdleAI(); }
437 CHARACTER(zombie, humanoid)
439 public:
440 virtual void BeTalkedTo();
441 virtual truth BodyPartIsVital(int) const;
442 virtual void CreateBodyParts(int);
443 virtual truth AllowSpoil() const { return true; }
444 void SetDescription(cfestring What) { Description = What; }
445 virtual void Save(outputfile&) const;
446 virtual void Load(inputfile&);
447 virtual festring GetZombieDescription() const;
448 protected:
449 virtual void PostConstruct();
450 virtual void AddPostFix(festring&, int) const;
451 virtual void GetAICommand();
452 virtual truth AllowExperience() const { return false; }
453 festring Description;
456 CHARACTER(imp, humanoid)
460 CHARACTER(mistress, humanoid)
462 public:
463 virtual int TakeHit(character*, item*, bodypart*, v2, double, double, int, int, int, truth, truth);
464 virtual truth ReceiveDamage(character*, int, int, int = ALL, int = 8, truth = false, truth = false, truth = false, truth = true);
465 virtual truth AllowEquipment(citem*, int) const;
468 CHARACTER(werewolfhuman, humanoid)
472 CHARACTER(werewolfwolf, humanoid)
474 public:
475 virtual festring GetKillName() const;
478 CHARACTER(kobold, humanoid)
482 CHARACTER(gibberling, humanoid)
486 CHARACTER(angel, humanoid)
488 public:
489 angel() : LastHealed(0) { }
490 virtual void Load(inputfile&);
491 virtual void Save(outputfile&) const;
492 virtual truth AttachBodyPartsOfFriendsNear();
493 virtual truth BodyPartIsVital(int) const;
494 virtual int GetAttribute(int, truth = true) const;
495 virtual col24 GetBaseEmitation() const;
496 virtual truth CanCreateBodyPart(int) const;
497 virtual cfestring& GetStandVerb() const { return character::GetStandVerb(); }
498 virtual void FinalProcessForBone();
499 virtual void CreateInitialEquipment(int);
500 protected:
501 virtual int GetTorsoMainColor() const;
502 virtual int GetArmMainColor() const;
503 virtual void GetAICommand();
504 uLong LastHealed;
507 CHARACTER(kamikazedwarf, humanoid)
509 public:
510 virtual truth Hit(character*, v2, int, int = 0);
511 virtual truth CheckForUsefulItemsOnGround(truth = true) { return false; }
512 virtual void GetAICommand();
513 virtual void CreateInitialEquipment(int);
514 virtual truth IsKamikazeDwarf() const { return true; }
515 virtual void SingRandomSong();
516 protected:
517 virtual int GetTorsoMainColor() const;
518 virtual int GetGauntletColor() const;
519 virtual int GetLegMainColor() const;
520 virtual v2 GetDrawDisplacement(int) const;
521 virtual int GetWSkillHits() const { return 10000; }
522 virtual truth IsElite() const { return false; }
525 CHARACTER(axethrowerdwarf, humanoid)
527 public:
528 virtual void GetAICommand();
529 virtual void CreateInitialEquipment(int);
530 protected:
531 virtual int GetTorsoMainColor() const;
532 virtual int GetGauntletColor() const;
533 virtual int GetLegMainColor() const;
534 virtual v2 GetDrawDisplacement(int) const;
535 virtual int GetWSkillHits() const { return 10000; }
536 virtual truth IsElite() const { return false; }
539 CHARACTER(genie, humanoid)
541 public:
542 virtual truth BodyPartIsVital(int) const;
543 virtual int GetAttribute(int, truth = true) const;
544 virtual truth CanCreateBodyPart(int) const;
545 virtual cfestring& GetStandVerb() const { return character::GetStandVerb(); }
548 CHARACTER(orc, humanoid)
550 protected:
551 virtual void PostConstruct();
554 CHARACTER(cossack, humanoid)
558 CHARACTER(bananagrower, humanoid)
560 public:
561 virtual void Save(outputfile&) const;
562 virtual void Load(inputfile&);
563 virtual void BeTalkedTo();
564 virtual festring& ProcessMessage(festring&) const;
565 virtual truth IsBananaGrower() const { return true; }
566 festring GetProfession() const { return Profession; }
567 protected:
568 virtual truth HandleCharacterBlockingTheWay(character*, v2, int);
569 virtual void PostConstruct();
570 virtual void GetAICommand();
571 void RandomizeProfession();
572 festring Profession;
573 truth HasDroppedBananas;
574 truth FeedingSumo;
577 CHARACTER(imperialist, humanoid)
579 public:
580 virtual void GetAICommand () { StandIdleAI(); }
581 virtual void BeTalkedTo ();
582 virtual void DisplayStethoscopeInfo (character *) const;
583 protected:
584 virtual void CreateCorpse (lsquare *);
587 CHARACTER(smith, humanoid)
589 public:
590 virtual void BeTalkedTo();
591 virtual void GetAICommand() { StandIdleAI(); }
594 CHARACTER(elder, humanoid)
596 protected:
597 virtual void GetAICommand();
598 virtual void CreateBodyParts(int);
601 CHARACTER(encourager, humanoid)
603 /*public:
604 encourager() : LastHit(0) { }
605 virtual void Save(outputfile&) const;
606 virtual void Load(inputfile&);
607 virtual void FinalProcessForBone();
608 protected:
609 virtual void GetAICommand();
610 uLong LastHit;*/
611 protected:
612 virtual void GetAICommand() { StandIdleAI(); }
615 CHARACTER(darkmage, humanoid)
617 protected:
618 virtual void GetAICommand();
619 int GetSpellAPCost() const;
622 CHARACTER(necromancer, humanoid)
624 public:
625 virtual truth TryToRaiseZombie();
626 virtual void RaiseSkeleton();
627 protected:
628 virtual void GetAICommand();
629 int GetSpellAPCost() const;
632 CHARACTER(sumowrestler, humanoid)
634 public:
635 virtual void BeTalkedTo();
636 virtual truth CheckIfSatiated() { return GetNP() > BLOATED_LEVEL; }
637 virtual truth IsSumoWrestler() const { return true; }
638 virtual truth EquipmentIsAllowed(int) const;
639 protected:
640 virtual void GetAICommand();
643 CHARACTER(tourist, humanoid)
645 public:
646 virtual character* GetLeader() const;
647 protected:
648 virtual void GetAICommand();
651 CHARACTER(veterankamikazedwarf, kamikazedwarf)
653 protected:
654 virtual void PostConstruct();
655 virtual int GetTorsoMainColor() const;
656 virtual int GetGauntletColor() const;
657 virtual int GetLegMainColor() const;
658 virtual int GetWSkillHits() const { return 50000; }
659 virtual truth IsElite() const { return true; }
662 CHARACTER(archangel, angel)
664 public:
665 virtual void CreateInitialEquipment(int);
666 protected:
667 virtual int GetTorsoMainColor() const;
668 virtual int GetArmMainColor() const;
671 CHARACTER(tailor, humanoid)
673 public:
674 virtual void BeTalkedTo();
675 virtual void GetAICommand() { StandIdleAI(); }
679 CHARACTER(siren, humanoid)
681 public:
682 virtual void GetAICommand();
683 protected:
684 virtual truth TryToSing();
688 CHARACTER(punisher, humanoid)
693 CHARACTER(mysteryman, humanoid)
695 public:
696 virtual void BeTalkedTo();
699 CHARACTER(denim, humanoid)
701 protected:
702 virtual void GetAICommand();
705 CHARACTER(raven, humanoid)
707 public:
708 virtual void BeTalkedTo();
709 protected:
710 virtual void GetAICommand();
713 CHARACTER(wisefarmer, humanoid)
715 protected:
716 virtual void GetAICommand();
717 public:
718 virtual v2 GetHeadBitmapPos() const;
719 virtual v2 GetRightArmBitmapPos() const;
720 virtual v2 GetLeftArmBitmapPos() const { return GetRightArmBitmapPos(); }
723 CHARACTER(vulcan, humanoid)
725 protected:
726 virtual void GetAICommand();
729 CHARACTER(bum, humanoid)
733 CHARACTER(rogue, humanoid)
735 public:
736 virtual void GetAICommand();
737 virtual truth IsRetreating() const;
740 CHARACTER(assassin, humanoid)
742 public:
743 virtual void BeTalkedTo();
746 CHARACTER(reaper, genie)
751 #endif