3 * Iter Vehemens ad Necem (IVAN)
4 * Copyright (C) Timo Kiviluoto
5 * Released under the GNU General
8 * See LICENSING which should be included
9 * along with this file for more details
18 CHARACTER(humanoid
, character
)
21 friend class rightarm
;
24 humanoid () : CurrentRightSWeaponSkill(0), CurrentLeftSWeaponSkill(0) { }
25 humanoid (const 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
CheckAIZapOpportunity();
82 virtual truth
CheckOffer() const;
83 virtual sorter
EquipmentSorter(int) const;
84 virtual void SetEquipment(int, item
*);
85 virtual void DrawSilhouette(truth
) const;
86 virtual int GetGlobalResistance(int) const;
87 virtual truth
TryToRiseFromTheDead();
88 virtual truth
HandleNoBodyPart(int);
89 virtual void Kick(lsquare
*, int, truth
= false);
90 virtual double GetTimeToKill(ccharacter
*, truth
) const;
91 virtual int GetAttribute(int, truth
= true) const;
92 virtual truth
EditAttribute(int, int);
93 virtual void EditExperience(int, double, double);
94 virtual int DrawStats(truth
) const;
95 virtual void Bite(character
*, v2
, int, truth
= false);
96 virtual int GetCarryingStrength() const;
97 virtual int GetRandomStepperBodyPart() const;
98 virtual int CheckForBlock(character
*, item
*, double, int, int, int);
99 virtual truth
AddSpecialSkillInfo(felist
&) const;
100 virtual truth
CheckBalance(double);
101 virtual sLong
GetMoveAPRequirement(int) const;
102 virtual v2
GetEquipmentPanelPos(int) const;
103 virtual truth
EquipmentEasilyRecognized(int) const;
104 sweaponskill
* GetCurrentRightSWeaponSkill() const { return CurrentRightSWeaponSkill
; }
105 void SetCurrentRightSWeaponSkill(sweaponskill
* What
) { CurrentRightSWeaponSkill
= What
; }
106 sweaponskill
* GetCurrentLeftSWeaponSkill() const { return CurrentLeftSWeaponSkill
; }
107 void SetCurrentLeftSWeaponSkill(sweaponskill
* What
) { CurrentLeftSWeaponSkill
= What
; }
108 virtual void SWeaponSkillTick();
109 virtual void Save(outputfile
&) const;
110 virtual void Load(inputfile
&);
111 virtual void SignalEquipmentAdd(int);
112 virtual void SignalEquipmentRemoval(int, citem
*);
113 virtual void DrawBodyParts(blitdata
&) const;
114 virtual truth
CanUseStethoscope(truth
) const;
115 virtual truth
IsUsingArms() const;
116 virtual truth
IsUsingLegs() const;
117 virtual truth
IsUsingHead() const;
118 virtual void CalculateBattleInfo();
119 virtual void CalculateBodyParts();
120 virtual void CalculateAllowedWeaponSkillCategories();
121 virtual truth
HasALeg() const { return HasAUsableLeg(); }
122 virtual void AddSpecialEquipmentInfo(festring
&, int) const;
123 virtual void CreateInitialEquipment(int);
124 virtual festring
GetBodyPartName(int, truth
= false) const;
125 virtual void CreateBlockPossibilityVector(blockvector
&, double) const;
126 virtual item
* SevereBodyPart(int, truth
= false, stack
* = 0);
127 virtual int GetSWeaponSkillLevel(citem
*) const;
128 virtual truth
UseMaterialAttributes() const;
129 virtual void CalculateDodgeValue();
130 virtual truth
CheckZap();
131 virtual truth
IsHumanoid() const { return true; }
132 virtual truth
CheckTalk();
133 virtual truth
CheckIfEquipmentIsNotUsable(int) const;
134 virtual void AddSpecialStethoscopeInfo(felist
&) const;
135 virtual item
* GetPairEquipment(int) const;
136 virtual truth
HasHead() const { return truth(GetHead()); }
137 virtual cfestring
& GetStandVerb() const;
138 virtual head
* Behead();
139 virtual void AddAttributeInfo(festring
&) const;
140 virtual void AddAttackInfo(felist
&) const;
141 virtual void AddDefenceInfo(felist
&) const;
142 virtual void DetachBodyPart();
143 virtual int GetRandomApplyBodyPart() const;
144 void EnsureCurrentSWeaponSkillIsCorrect(sweaponskill
*&, citem
*);
145 virtual int GetSumOfAttributes() const;
146 virtual truth
CheckConsume(cfestring
&) const;
147 virtual truth
CanConsume(material
*) const;
148 virtual truth
PreProcessForBone();
149 virtual void FinalProcessForBone();
150 virtual void StayOn(liquid
*);
151 virtual head
* GetVirtualHead() const { return GetHead(); }
152 virtual character
* CreateZombie() const;
153 virtual void LeprosyHandler();
154 virtual void DropRandomNonVitalBodypart();
155 virtual void DropBodyPart(int);
156 virtual void DuplicateEquipment(character
*, uLong
);
157 virtual int GetAttributeAverage() const;
158 virtual truth
CanVomit() const;
159 virtual truth
CheckApply() const;
160 virtual truth
CanForceVomit() const { return TorsoIsAlive() && HasAUsableArm(); }
161 virtual truth
IsTransparent() const;
162 virtual void ModifySituationDanger(double&) const;
163 virtual int RandomizeTryToUnStickBodyPart(uLong
) const;
164 virtual truth
AllowUnconsciousness() const;
165 virtual truth
CanChokeOnWeb(web
*) const;
166 virtual truth
BrainsHurt() const;
167 virtual cchar
* GetRunDescriptionLine(int) const;
168 virtual cchar
* GetNormalDeathMessage() const;
169 virtual void ApplySpecialAttributeBonuses();
170 virtual truth
MindWormCanPenetrateSkull(mindworm
*) const;
171 truth
HasSadistWeapon() const;
172 virtual truth
HasSadistAttackMode() const;
173 virtual void SurgicallyDetachBodyPart();
175 virtual v2
GetBodyPartBitmapPos(int, truth
= false) const;
176 virtual col16
GetBodyPartColorB(int, truth
= false) const;
177 virtual col16
GetBodyPartColorC(int, truth
= false) const;
178 virtual col16
GetBodyPartColorD(int, truth
= false) const;
179 virtual int GetBodyPartSparkleFlags(int) const;
180 virtual sLong
GetBodyPartSize(int, int) const;
181 virtual sLong
GetBodyPartVolume(int) const;
182 virtual bodypart
* MakeBodyPart(int) const;
183 virtual cfestring
& GetDeathMessage() const;
184 virtual v2
GetDrawDisplacement(int) const { return ZERO_V2
; }
185 truth
HasAUsableArm() const;
186 truth
HasAUsableLeg() const;
187 truth
HasTwoUsableLegs() const;
188 truth
CanAttackWithAnArm() const;
189 truth
RightArmIsUsable() const;
190 truth
LeftArmIsUsable() const;
191 truth
RightLegIsUsable() const;
192 truth
LeftLegIsUsable() const;
193 std::list
<sweaponskill
*> SWeaponSkill
;
194 sweaponskill
* CurrentRightSWeaponSkill
;
195 sweaponskill
* CurrentLeftSWeaponSkill
;
196 static cint DrawOrder
[];
199 CHARACTER(playerkind
, humanoid
)
203 playerkind(const playerkind
&);
204 virtual void Save(outputfile
&) const;
205 virtual void Load(inputfile
&);
206 virtual void SetSoulID(uLong
);
207 virtual truth
SuckSoul(character
*);
208 virtual truth
TryToRiseFromTheDead();
209 virtual void FinalProcessForBone();
210 virtual void BeTalkedTo();
211 virtual truth
IsHuman() const { return true; }
212 virtual col16
GetHairColor() const { return HairColor
; }
213 virtual col16
GetEyeColor() const { return EyeColor
; }
214 virtual v2
GetHeadBitmapPos() const;
215 virtual v2
GetRightArmBitmapPos() const;
216 virtual v2
GetLeftArmBitmapPos() const;
217 virtual int GetNaturalSparkleFlags() const;
218 virtual truth
IsPlayerKind() const { return true; }
219 virtual double GetNaturalExperience(int) const;
221 virtual bodypart
* MakeBodyPart(int) const;
222 virtual void PostConstruct();
232 CHARACTER(petrus
, humanoid
)
237 virtual void Save(outputfile
&) const;
238 virtual void Load(inputfile
&);
239 virtual void BeTalkedTo();
240 truth
HealFully(character
*);
241 virtual void FinalProcessForBone();
242 virtual truth
MoveTowardsHomePos();
244 virtual void CreateCorpse(lsquare
*);
245 virtual void GetAICommand();
249 CHARACTER(farmer
, humanoid
)
252 virtual v2
GetHeadBitmapPos() const;
253 virtual v2
GetRightArmBitmapPos() const;
254 virtual v2
GetLeftArmBitmapPos() const { return GetRightArmBitmapPos(); }
257 CHARACTER(guard
, humanoid
)
260 guard() : NextWayPoint(0) { }
261 virtual void Save(outputfile
&) const;
262 virtual void Load(inputfile
&);
263 virtual void GetAICommand();
264 virtual void SetWayPoints(const fearray
<packv2
>&);
265 virtual truth
MoveTowardsHomePos();
266 virtual void BeTalkedTo();
268 std::vector
<v2
> WayPoints
;
272 CHARACTER(shopkeeper
, humanoid
)
277 virtual void GetAICommand() { StandIdleAI(); }
280 CHARACTER(priest
, humanoid
)
283 virtual void GetAICommand () { StandIdleAI(); }
284 virtual void BeTalkedTo ();
287 CHARACTER(exiledpriest
, priest
)
291 virtual ~exiledpriest ();
292 virtual void Save (outputfile
&) const;
293 virtual void Load (inputfile
&);
294 virtual void BeTalkedTo ();
295 virtual truth
MoveTowardsHomePos ();
297 virtual void GetAICommand ();
298 void healBodyParts ();
299 void healDeseases ();
305 CHARACTER(oree
, humanoid
)
308 virtual void Bite(character
*, v2
, int, truth
= false);
309 virtual void GetAICommand();
311 virtual cchar
* FirstPersonBiteVerb() const;
312 virtual cchar
* FirstPersonCriticalBiteVerb() const;
313 virtual cchar
* ThirdPersonBiteVerb() const;
314 virtual cchar
* ThirdPersonCriticalBiteVerb() const;
315 virtual cchar
* BiteNoun() const;
316 void CallForMonsters();
319 CHARACTER(darkknight
, humanoid
)
322 virtual int ModifyBodyPartHitPreference(int, int) const;
323 virtual int ModifyBodyPartToHitChance(int, int) const;
324 virtual truth
CanPanicFromSeveredBodyPart() const { return false; }
325 virtual void SpecialBodyPartSeverReaction();
328 CHARACTER(ennerbeast
, humanoid
)
331 virtual truth
Hit(character
*, v2
, int, int = 0);
332 virtual truth
MustBeRemovedFromBone() const;
334 virtual bodypart
* MakeBodyPart(int) const;
335 virtual void GetAICommand();
336 virtual truth
AttackIsBlockable(int) const { return false; }
339 CHARACTER(skeleton
, humanoid
)
342 virtual void BeTalkedTo();
343 virtual item
* SevereBodyPart(int, truth
= false, stack
* = 0);
344 virtual truth
BodyPartIsVital(int) const;
345 virtual sLong
GetBodyPartVolume(int) const;
347 virtual void CreateCorpse(lsquare
*);
350 CHARACTER(goblin
, humanoid
)
354 CHARACTER(golem
, humanoid
)
358 virtual truth
MoveRandomly();
359 virtual truth
CheckForUsefulItemsOnGround(truth
= true) { return false; }
360 virtual void BeTalkedTo();
361 virtual void Save(outputfile
&) const;
362 virtual void Load(inputfile
&);
363 void SetItemVolume(sLong What
) { ItemVolume
= What
; }
365 virtual truth
AddAdjective(festring
&, truth
) const;
366 virtual material
* CreateBodyPartMaterial(int, sLong
) const;
367 virtual void CreateCorpse(lsquare
*);
371 CHARACTER(communist
, humanoid
)
374 virtual truth
MoveRandomly();
375 virtual void BeTalkedTo();
376 virtual truth
BoundToUse(citem
*, int) const;
377 virtual truth
MustBeRemovedFromBone() const;
379 virtual truth
ShowClassDescription() const;
382 CHARACTER(hunter
, humanoid
)
385 virtual void BeTalkedTo();
387 virtual void CreateBodyParts(int);
390 CHARACTER(slave
, playerkind
)
393 virtual void BeTalkedTo();
394 virtual void GetAICommand();
395 virtual col16
GetHairColor() const { return humanoid::GetHairColor(); }
396 virtual col16
GetEyeColor() const { return humanoid::GetEyeColor(); }
398 virtual void PostConstruct();
401 CHARACTER(petrusswife
, humanoid
)
404 petrusswife() : GiftTotal(0) { }
405 virtual truth
MoveRandomly() { return MoveRandomlyInRoom(); }
406 virtual truth
SpecialEnemySightedReaction(character
*);
407 virtual void Save(outputfile
&) const;
408 virtual void Load(inputfile
&);
409 virtual void BeTalkedTo();
414 CHARACTER(housewife
, humanoid
)
417 virtual truth
SpecialEnemySightedReaction(character
*);
419 virtual int GetHairColor() const;
420 virtual v2
GetHeadBitmapPos() const;
423 CHARACTER(femaleslave
, humanoid
)
426 virtual void BeTalkedTo();
428 virtual void GetAICommand() { StandIdleAI(); }
431 CHARACTER(librarian
, humanoid
)
434 virtual void BeTalkedTo();
436 virtual void GetAICommand() { StandIdleAI(); }
439 CHARACTER(zombie
, humanoid
)
442 virtual void BeTalkedTo();
443 virtual truth
BodyPartIsVital(int) const;
444 virtual void CreateBodyParts(int);
445 virtual truth
AllowSpoil() const { return true; }
446 void SetDescription(cfestring What
) { Description
= What
; }
447 virtual void Save(outputfile
&) const;
448 virtual void Load(inputfile
&);
449 virtual festring
GetZombieDescription() const;
451 virtual void PostConstruct();
452 virtual void AddPostFix(festring
&, int) const;
453 virtual void GetAICommand();
454 virtual truth
AllowExperience() const { return false; }
455 festring Description
;
458 CHARACTER(imp
, humanoid
)
462 CHARACTER(mistress
, humanoid
)
465 virtual int TakeHit(character
*, item
*, bodypart
*, v2
, double, double, int, int, int, truth
, truth
);
466 virtual truth
ReceiveDamage(character
*, int, int, int = ALL
, int = 8, truth
= false, truth
= false, truth
= false, truth
= true);
467 virtual truth
AllowEquipment(citem
*, int) const;
470 CHARACTER(werewolfhuman
, humanoid
)
474 CHARACTER(werewolfwolf
, humanoid
)
477 virtual festring
GetKillName() const;
480 CHARACTER(kobold
, humanoid
)
484 CHARACTER(gibberling
, humanoid
)
488 CHARACTER(angel
, humanoid
)
491 angel() : LastHealed(0) { }
492 virtual void Load(inputfile
&);
493 virtual void Save(outputfile
&) const;
494 virtual truth
AttachBodyPartsOfFriendsNear();
495 virtual truth
BodyPartIsVital(int) const;
496 virtual int GetAttribute(int, truth
= true) const;
497 virtual col24
GetBaseEmitation() const;
498 virtual truth
CanCreateBodyPart(int) const;
499 virtual cfestring
& GetStandVerb() const { return character::GetStandVerb(); }
500 virtual void FinalProcessForBone();
501 virtual void CreateInitialEquipment(int);
503 virtual int GetTorsoMainColor() const;
504 virtual int GetArmMainColor() const;
505 virtual void GetAICommand();
509 CHARACTER(kamikazedwarf
, humanoid
)
512 virtual truth
Hit(character
*, v2
, int, int = 0);
513 virtual truth
CheckForUsefulItemsOnGround(truth
= true) { return false; }
514 virtual void GetAICommand();
515 virtual void CreateInitialEquipment(int);
516 virtual truth
IsKamikazeDwarf() const { return true; }
517 virtual void SingRandomSong();
519 virtual int GetTorsoMainColor() const;
520 virtual int GetGauntletColor() const;
521 virtual int GetLegMainColor() const;
522 virtual v2
GetDrawDisplacement(int) const;
523 virtual int GetWSkillHits() const { return 10000; }
524 virtual truth
IsElite() const { return false; }
527 CHARACTER(axethrowerdwarf
, humanoid
)
530 virtual void GetAICommand();
531 virtual void CreateInitialEquipment(int);
533 virtual int GetTorsoMainColor() const;
534 virtual int GetGauntletColor() const;
535 virtual int GetLegMainColor() const;
536 virtual v2
GetDrawDisplacement(int) const;
537 virtual int GetWSkillHits() const { return 10000; }
538 virtual truth
IsElite() const { return false; }
541 CHARACTER(genie
, humanoid
)
544 virtual truth
BodyPartIsVital(int) const;
545 virtual int GetAttribute(int, truth
= true) const;
546 virtual truth
CanCreateBodyPart(int) const;
547 virtual cfestring
& GetStandVerb() const { return character::GetStandVerb(); }
550 CHARACTER(orc
, humanoid
)
553 virtual void PostConstruct();
556 CHARACTER(cossack
, humanoid
)
560 CHARACTER(bananagrower
, humanoid
)
563 virtual void Save(outputfile
&) const;
564 virtual void Load(inputfile
&);
565 virtual void BeTalkedTo();
566 virtual festring
& ProcessMessage(festring
&) const;
567 virtual truth
IsBananaGrower() const { return true; }
568 festring
GetProfession() const { return Profession
; }
570 virtual truth
HandleCharacterBlockingTheWay(character
*, v2
, int);
571 virtual void PostConstruct();
572 virtual void GetAICommand();
573 void RandomizeProfession();
575 truth HasDroppedBananas
;
579 CHARACTER(imperialist
, humanoid
)
582 virtual void GetAICommand () { StandIdleAI(); }
583 virtual void BeTalkedTo ();
584 virtual void DisplayStethoscopeInfo (character
*) const;
586 virtual void CreateCorpse (lsquare
*);
589 CHARACTER(smith
, humanoid
)
592 virtual void BeTalkedTo();
593 virtual void GetAICommand() { StandIdleAI(); }
596 CHARACTER(elder
, humanoid
)
599 virtual void GetAICommand();
600 virtual void CreateBodyParts(int);
603 CHARACTER(encourager
, humanoid
)
606 encourager() : LastHit(0) { }
607 virtual void Save(outputfile&) const;
608 virtual void Load(inputfile&);
609 virtual void FinalProcessForBone();
611 virtual void GetAICommand();
614 virtual void GetAICommand() { StandIdleAI(); }
617 CHARACTER(darkmage
, humanoid
)
620 virtual void GetAICommand();
621 int GetSpellAPCost() const;
624 CHARACTER(necromancer
, humanoid
)
627 virtual truth
TryToRaiseZombie();
628 virtual void RaiseSkeleton();
630 virtual void GetAICommand();
631 int GetSpellAPCost() const;
634 CHARACTER(sumowrestler
, humanoid
)
637 virtual void BeTalkedTo();
638 virtual truth
CheckIfSatiated() { return GetNP() > BLOATED_LEVEL
; }
639 virtual truth
IsSumoWrestler() const { return true; }
640 virtual truth
EquipmentIsAllowed(int) const;
642 virtual void GetAICommand();
645 CHARACTER(tourist
, humanoid
)
648 virtual character
* GetLeader() const;
650 virtual void GetAICommand();
653 CHARACTER(veterankamikazedwarf
, kamikazedwarf
)
656 virtual void PostConstruct();
657 virtual int GetTorsoMainColor() const;
658 virtual int GetGauntletColor() const;
659 virtual int GetLegMainColor() const;
660 virtual int GetWSkillHits() const { return 50000; }
661 virtual truth
IsElite() const { return true; }
664 CHARACTER(archangel
, angel
)
667 virtual void CreateInitialEquipment(int);
669 virtual int GetTorsoMainColor() const;
670 virtual int GetArmMainColor() const;
673 CHARACTER(tailor
, humanoid
)
676 virtual void BeTalkedTo();
677 virtual void GetAICommand() { StandIdleAI(); }
681 CHARACTER(siren
, humanoid
)
684 virtual void GetAICommand();
686 virtual truth
TryToSing();
690 CHARACTER(punisher
, humanoid
)
695 CHARACTER(mysteryman
, humanoid
)
698 virtual void BeTalkedTo();
701 CHARACTER(denim
, humanoid
)
704 virtual void GetAICommand();
707 CHARACTER(raven
, humanoid
)
710 virtual void BeTalkedTo();
712 virtual void GetAICommand();
715 CHARACTER(wisefarmer
, humanoid
)
718 virtual void GetAICommand();
720 virtual v2
GetHeadBitmapPos() const;
721 virtual v2
GetRightArmBitmapPos() const;
722 virtual v2
GetLeftArmBitmapPos() const { return GetRightArmBitmapPos(); }
725 CHARACTER(vulcan
, humanoid
)
728 virtual void GetAICommand();
731 CHARACTER(bum
, humanoid
)
735 CHARACTER(rogue
, humanoid
)
738 virtual void GetAICommand();
739 virtual truth
IsRetreating() const;
742 CHARACTER(assassin
, humanoid
)
745 virtual void BeTalkedTo();
748 CHARACTER(reaper
, genie
)
752 CHARACTER(shaman
, humanoid
)
755 virtual void GetAICommand ();
756 virtual void PostConstruct ();
757 int GetSpellAPCost () const;
761 CHARACTER(warlock
, humanoid
)
764 virtual void GetAICommand ();
765 int GetSpellAPCost() const;
769 CHARACTER(alchemist
, humanoid
)
772 virtual void GetAICommand ();
773 int GetSpellAPCost () const;
777 CHARACTER(doctor
, humanoid
)
780 virtual void BeTalkedTo ();
784 CHARACTER(insudo
, angel
)
787 virtual col24
GetBaseEmitation() const { return MakeRGB24(120, 120, 150); }
788 virtual void CreateInitialEquipment(int); //has a bespoke function to handle this, need to adapt from the archangel code
790 virtual int GetTorsoMainColor() const { return MakeRGB16(120, 120, 120); }
791 virtual int GetArmMainColor() const { return MakeRGB16(120, 120, 120); }
792 virtual void GetAICommand();