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
13 #ifndef __BODYPART_H__
14 #define __BODYPART_H__
25 mutable bitmap
* PanelBitmap
;
28 outputfile
& operator<<(outputfile
&, const scar
&);
29 inputfile
& operator>>(inputfile
&, scar
&);
36 RAW_SAVE_LOAD(damageid
);
42 bodypart() : Master(0) { }
43 bodypart(const bodypart
&);
45 virtual void Save(outputfile
&) const;
46 virtual void Load(inputfile
&);
47 virtual int GetGraphicsContainerIndex() const;
48 character
* GetMaster() const { return Master
; }
49 humanoid
* GetHumanoidMaster() const;
50 void SetMaster(character
* What
) { Master
= What
; }
51 virtual int GetStrengthValue() const;
52 int GetMaxHP() const { return MaxHP
; }
54 int GetHP() const { return HP
; }
55 void EditHP(int, int);
57 virtual int GetTotalResistance(int) const { return 0; }
58 virtual truth
ReceiveDamage(character
*, int, int, int);
59 cfestring
& GetOwnerDescription() const { return OwnerDescription
; }
60 void SetOwnerDescription(cfestring
& What
) { OwnerDescription
= What
; }
61 truth
IsUnique() const { return Flags
& UNIQUE
; }
62 void SetIsUnique(truth
);
63 virtual void DropEquipment(stack
* = 0) { }
64 virtual void InitSpecialAttributes() { }
65 virtual void SignalEquipmentAdd(gearslot
*);
66 virtual void SignalEquipmentRemoval(gearslot
*, citem
*);
67 virtual void Mutate();
68 sLong
GetBodyPartVolume() const { return BodyPartVolume
; }
69 sLong
GetCarriedWeight() const { return CarriedWeight
; }
70 virtual item
* GetEquipment(int) const { return 0; }
71 virtual int GetEquipments() const { return 0; }
72 virtual void CalculateVolumeAndWeight();
73 virtual void CalculateEmitation();
74 void CalculateMaxHP(feuLong
= MAY_CHANGE_HPS
|CHECK_USABILITY
);
75 virtual void SignalVolumeAndWeightChange();
78 virtual void CalculateDamage() { }
79 virtual void CalculateToHitValue() { }
80 virtual void CalculateAPCost() { }
81 void CalculateAttackInfo();
82 double GetTimeToDie(int, double, double, truth
, truth
) const;
83 virtual double GetRoughChanceToHit(double, double) const;
84 cfestring
& GetBodyPartName() const { return GetNameSingular(); }
85 void RandomizePosition();
86 void ResetPosition() { SpecialFlags
&= ~0x7; }
87 virtual void SignalSpoil(material
*);
88 virtual truth
CanBePiledWith(citem
*, ccharacter
*) const;
89 truth
IsAlive() const;
91 void SpillBlood(int, v2
);
93 int GetConditionColorIndex() const;
94 void SetBitmapPos(v2 What
) { BitmapPos
= What
; }
95 void SetSpecialFlags(int What
) { SpecialFlags
= What
; }
96 void SetWobbleData(int What
) { WobbleData
= What
; }
97 void SetMaterialColorB(col16 What
) { ColorB
= What
; }
98 void SetMaterialColorC(col16 What
) { ColorC
= What
; }
99 void SetMaterialColorD(col16 What
) { ColorD
= What
; }
100 virtual void SignalEnchantmentChange();
101 virtual void CalculateAttributeBonuses() { }
102 virtual void SignalSpoilLevelChange(material
*);
103 virtual truth
CanBeEatenByAI(ccharacter
*) const;
104 virtual truth
DamageArmor(character
*, int, int) { return false; }
105 truth
CanBeSevered(int) const;
106 virtual truth
EditAllAttributes(int) { return false; }
107 virtual void Draw(blitdata
&) const;
108 void SetSparkleFlags(int);
109 virtual int GetSpecialFlags() const;
110 virtual truth
IsRepairable(ccharacter
*) const;
111 truth
IsWarm() const;
112 truth
UseMaterialAttributes() const;
113 truth
CanRegenerate() const;
114 truth
CanHaveParasite() const;
115 virtual square
* GetSquareUnder(int = 0) const;
116 virtual lsquare
* GetLSquareUnder(int = 0) const;
117 virtual item
* GetArmorToReceiveFluid(truth
) const { return 0; }
118 virtual void SpillFluid(character
*, liquid
*, int = 0);
119 void StayOn(liquid
*);
120 void SetBloodMaterial(int What
) { BloodMaterial
= What
; }
121 int GetBloodMaterial() const { return BloodMaterial
; }
122 liquid
* CreateBlood(sLong
) const;
123 virtual truth
UpdateArmorPictures() { return false; }
124 virtual void DrawArmor(blitdata
&) const { }
125 virtual void UpdatePictures();
126 item
*GetExternalBodyArmor () const;
127 item
*GetExternalCloak () const;
128 item
*GetExternalHelmet () const;
129 item
*GetExternalBelt () const;
130 virtual void ReceiveAcid(material
*, cfestring
&, sLong
);
131 virtual truth
ShowFluids() const { return false; }
132 virtual void TryToRust(sLong
);
133 virtual truth
AllowFluidBe() const;
134 virtual material
* RemoveMaterial(material
*);
135 virtual void CopyAttributes(const bodypart
*) { }
136 virtual void DestroyBodyPart(stack
*);
137 virtual void SetLifeExpectancy(int, int);
138 virtual void SpecialEatEffect(character
*, int);
139 virtual character
* GetBodyPartMaster() const { return Master
; }
140 virtual truth
AllowFluids() const { return true; }
141 truth
IsBadlyHurt() const { return Flags
& BADLY_HURT
; }
142 truth
IsStuck() const { return Flags
& STUCK
; }
143 truth
IsUsable() const { return !(Flags
& (BADLY_HURT
|STUCK
)); }
144 virtual void SignalPossibleUsabilityChange() { UpdateFlags(); }
145 void SetIsInfectedByLeprosy(truth
);
146 virtual int GetSparkleFlags() const;
147 virtual truth
MaterialIsChangeable(ccharacter
*) const;
148 virtual void RemoveRust();
150 virtual sLong
GetFixPrice() const;
151 virtual truth
IsFixableBySmith(ccharacter
*) const;
152 virtual truth
IsFixableByTailor(ccharacter
*) const;
153 virtual void SignalMaterialChange();
154 void SetNormalMaterial(int What
) { NormalMaterial
= What
; }
155 virtual truth
IsBroken() const { return HP
< MaxHP
; }
156 virtual truth
IsDestroyable(ccharacter
*) const;
157 void DrawScars(cblitdata
&) const;
158 static truth
DamageTypeCanScar(int);
159 void GenerateScar(int, int);
160 int CalculateScarAttributePenalty(int) const;
161 virtual truth
IsBodyPart () const { return true; }
164 virtual alpha
GetMaxAlpha() const;
165 virtual void GenerateMaterials() { }
166 virtual void AddPostFix(festring
&, int) const;
167 virtual truth
ShowMaterial() const;
168 virtual int GetArticleMode() const;
169 virtual col16
GetMaterialColorA(int) const;
170 virtual col16
GetMaterialColorB(int) const { return ColorB
; }
171 virtual col16
GetMaterialColorC(int) const { return ColorC
; }
172 virtual col16
GetMaterialColorD(int) const { return ColorD
; }
173 virtual v2
GetBitmapPos(int) const { return BitmapPos
; }
174 virtual int GetWobbleData() const { return WobbleData
; }
175 void UpdateArmorPicture(graphicdata
&, item
*, int, v2 (item::*)(int) const, truth
= false) const;
176 void DrawEquipment(const graphicdata
&, blitdata
&) const;
178 truth
MasterIsAnimated() const;
179 void SignalAnimationStateChange(truth
);
180 virtual truth
AddAdjective(festring
&, truth
) const;
181 void RemoveDamageIDs(int);
182 void AddDamageID(int, int);
183 festring OwnerDescription
;
186 sLong BodyPartVolume
;
195 short NormalMaterial
;
196 uChar SpillBloodCounter
;
198 std::vector
<scar
> Scar
;
199 std::deque
<damageid
> DamageID
;
208 virtual void Save(outputfile
&) const;
209 virtual void Load(inputfile
&);
210 virtual int GetTotalResistance(int) const;
211 void SetHelmet(item
* What
) { HelmetSlot
.PutInItem(What
); }
212 item
* GetHelmet() const { return *HelmetSlot
; }
213 void SetAmulet(item
* What
) { AmuletSlot
.PutInItem(What
); }
214 item
* GetAmulet() const { return *AmuletSlot
; }
215 virtual void DropEquipment(stack
* = 0);
216 virtual int GetBodyPartIndex() const;
217 double GetBiteDamage() const { return BiteDamage
; }
218 int GetBiteMinDamage() const;
219 int GetBiteMaxDamage() const;
220 double GetBiteToHitValue() const { return BiteToHitValue
; }
221 sLong
GetBiteAPCost() const { return BiteAPCost
; }
222 virtual void InitSpecialAttributes();
223 virtual item
* GetEquipment(int) const;
224 virtual int GetEquipments() const { return 2; }
225 int GetBaseBiteStrength() const { return BaseBiteStrength
; }
226 void SetBaseBiteStrength(sLong What
) { BaseBiteStrength
= What
; }
227 virtual void CalculateDamage();
228 virtual void CalculateToHitValue();
229 virtual void CalculateAPCost();
230 virtual truth
DamageArmor(character
*, int, int);
231 virtual head
* Behead();
232 virtual item
* GetArmorToReceiveFluid(truth
) const;
233 virtual void SignalPossibleUsabilityChange();
235 void UpdateHeadArmorPictures(graphicdata
&) const;
238 int BaseBiteStrength
;
239 double BiteToHitValue
;
244 ITEM(torso
, bodypart
)
247 virtual int GetBodyPartIndex() const;
248 virtual double GetRoughChanceToHit(double, double) const;
251 ITEM(normaltorso
, torso
)
254 virtual int GetGraphicsContainerIndex() const;
255 virtual int GetTotalResistance(int) const;
258 ITEM(humanoidtorso
, torso
)
262 humanoidtorso(const humanoidtorso
&);
263 virtual ~humanoidtorso();
264 virtual void Save(outputfile
&) const;
265 virtual void Load(inputfile
&);
266 virtual int GetTotalResistance(int) const;
267 void SetBodyArmor(item
* What
) { BodyArmorSlot
.PutInItem(What
); }
268 item
* GetBodyArmor() const { return *BodyArmorSlot
; }
269 void SetCloak(item
* What
) { CloakSlot
.PutInItem(What
); }
270 item
* GetCloak() const { return *CloakSlot
; }
271 void SetBelt(item
* What
) { BeltSlot
.PutInItem(What
); }
272 item
* GetBelt() const { return *BeltSlot
; }
273 virtual void DropEquipment(stack
* = 0);
274 virtual item
* GetEquipment(int) const;
275 virtual int GetEquipments() const { return 3; }
276 virtual void SignalEquipmentAdd(gearslot
*);
277 virtual void SignalVolumeAndWeightChange();
278 virtual truth
DamageArmor(character
*, int, int);
279 virtual item
* GetArmorToReceiveFluid(truth
) const;
281 void UpdateTorsoArmorPictures(graphicdata
&, graphicdata
&, graphicdata
&) const;
282 gearslot BodyArmorSlot
;
290 arm() : StrengthBonus(0), DexterityBonus(0) { }
293 virtual void Save(outputfile
&) const;
294 virtual void Load(inputfile
&);
295 virtual int GetTotalResistance(int) const;
296 double GetWieldedDamage() const;
297 double GetWieldedToHitValue() const;
298 void SetWielded(item
* What
) { WieldedSlot
.PutInItem(What
); }
299 item
* GetWielded() const { return *WieldedSlot
; }
300 void SetGauntlet(item
* What
) { GauntletSlot
.PutInItem(What
); }
301 item
* GetGauntlet() const { return *GauntletSlot
; }
302 void SetRing(item
* What
) { RingSlot
.PutInItem(What
); }
303 item
* GetRing() const { return *RingSlot
; }
304 virtual void DropEquipment(stack
* = 0);
305 double GetUnarmedToHitValue() const;
306 double GetUnarmedDamage() const;
307 void Hit(character
*, v2
, int, int = 0);
308 int GetAttribute(int, truth
= true) const;
309 truth
EditAttribute(int, int);
310 void EditExperience(int, double, double);
311 void SetStrength(int What
) { StrengthExperience
= What
* EXP_MULTIPLIER
; }
312 void SetDexterity(int What
) { DexterityExperience
= What
* EXP_MULTIPLIER
; }
313 virtual void InitSpecialAttributes();
314 virtual void Mutate();
315 virtual arm
* GetPairArm() const { return 0; }
316 sLong
GetWieldedAPCost() const;
317 sLong
GetUnarmedAPCost() const;
318 virtual item
* GetEquipment(int) const;
319 virtual int GetEquipments() const { return 3; }
320 int GetBaseUnarmedStrength() const { return BaseUnarmedStrength
; }
321 void SetBaseUnarmedStrength(sLong What
) { BaseUnarmedStrength
= What
; }
322 virtual void CalculateDamage();
323 virtual void CalculateToHitValue();
324 virtual void CalculateAPCost();
325 double GetDamage() const { return Damage
; }
326 int GetMinDamage() const;
327 int GetMaxDamage() const;
328 double GetToHitValue() const { return ToHitValue
; }
329 sLong
GetAPCost() const { return APCost
; }
330 truth
PairArmAllowsMelee() const;
331 virtual void SignalVolumeAndWeightChange();
332 truth
TwoHandWieldIsActive() const;
333 double GetBlockChance(double) const;
334 int GetBlockCapability() const;
335 void WieldedSkillHit(int);
336 double GetBlockValue() const;
337 void ApplyEquipmentAttributeBonuses(item
*);
338 virtual void CalculateAttributeBonuses();
339 int GetWieldedHitStrength() const;
340 virtual void SignalEquipmentAdd(gearslot
*);
341 virtual void SignalEquipmentRemoval(gearslot
*, citem
*);
342 void ApplyDexterityPenalty(item
*);
343 void ApplyStrengthBonus (item
*Item
);
344 void ApplyDexterityBonus (item
*Item
);
345 virtual truth
DamageArmor(character
*, int, int);
346 truth
CheckIfWeaponTooHeavy(cchar
*) const;
347 virtual truth
EditAllAttributes(int);
348 void AddAttackInfo(felist
&) const;
349 void AddDefenceInfo(felist
&) const;
350 void UpdateWieldedPicture();
351 void DrawWielded(blitdata
&) const;
352 virtual truth
IsRightArm() const { return 0; }
353 virtual void UpdatePictures();
354 virtual double GetTypeDamage(ccharacter
*) const;
355 virtual item
* GetArmorToReceiveFluid(truth
) const;
356 virtual void CopyAttributes(const bodypart
*);
357 double GetStrengthExperience() const { return StrengthExperience
; }
358 double GetDexterityExperience() const { return DexterityExperience
; }
359 virtual void SignalPossibleUsabilityChange();
360 virtual truth
IsAnimated() const;
361 truth
HasSadistWeapon() const;
364 virtual sweaponskill
** GetCurrentSWeaponSkill() const { return 0; }
365 void UpdateArmArmorPictures(graphicdata
&, graphicdata
&, int) const;
366 int GetCurrentSWeaponSkillBonus() const;
367 gearslot WieldedSlot
;
368 gearslot GauntletSlot
;
370 double StrengthExperience
;
371 double DexterityExperience
;
372 int BaseUnarmedStrength
;
378 graphicdata WieldedGraphicData
;
385 rightarm(const rightarm
&);
386 virtual int GetBodyPartIndex() const;
387 virtual arm
* GetPairArm() const;
388 virtual truth
IsRightArm() const { return true; }
389 virtual int GetSpecialFlags() const;
391 virtual sweaponskill
** GetCurrentSWeaponSkill() const;
398 leftarm(const leftarm
&);
399 virtual int GetBodyPartIndex() const;
400 virtual arm
* GetPairArm() const;
401 virtual truth
IsRightArm() const { return false; }
402 virtual int GetSpecialFlags() const;
404 virtual sweaponskill
** GetCurrentSWeaponSkill() const;
407 ITEM(groin
, bodypart
)
410 virtual int GetTotalResistance(int) const;
411 virtual int GetBodyPartIndex() const;
412 virtual truth
DamageArmor(character
*, int, int);
413 virtual int GetSpecialFlags() const;
414 virtual item
* GetArmorToReceiveFluid(truth
) const;
415 void UpdateGroinArmorPictures(graphicdata
&) const;
421 leg() : StrengthBonus(0), AgilityBonus(0) { }
424 virtual void Save(outputfile
&) const;
425 virtual void Load(inputfile
&);
426 virtual int GetTotalResistance(int) const;
427 void SetBoot(item
* What
) { BootSlot
.PutInItem(What
); }
428 item
* GetBoot() const { return *BootSlot
; }
429 virtual void DropEquipment(stack
* = 0);
430 double GetKickToHitValue() const { return KickToHitValue
; }
431 double GetKickDamage() const { return KickDamage
; }
432 int GetKickMinDamage() const;
433 int GetKickMaxDamage() const;
434 int GetAttribute(int, truth
= true) const;
435 truth
EditAttribute(int, int);
436 void EditExperience(int, double, double);
437 virtual void InitSpecialAttributes();
438 virtual void Mutate();
439 sLong
GetKickAPCost() const { return KickAPCost
; }
440 virtual item
* GetEquipment(int) const;
441 virtual int GetEquipments() const { return 1; }
442 sLong
GetBaseKickStrength() const { return BaseKickStrength
; }
443 void SetBaseKickStrength(sLong What
) { BaseKickStrength
= What
; }
444 virtual void CalculateDamage();
445 virtual void CalculateToHitValue();
446 virtual void CalculateAPCost();
447 void ApplyEquipmentAttributeBonuses(item
*);
448 virtual void CalculateAttributeBonuses();
449 virtual void SignalEquipmentAdd(gearslot
*);
450 void ApplyAgilityPenalty(item
*);
451 void ApplyStrengthBonus (item
*Item
);
452 void ApplyAgilityBonus (item
*Item
);
453 virtual void SignalVolumeAndWeightChange();
454 virtual truth
DamageArmor(character
*, int, int);
455 virtual truth
EditAllAttributes(int);
456 void AddAttackInfo(felist
&) const;
457 virtual item
* GetArmorToReceiveFluid(truth
) const;
458 virtual void CopyAttributes(const bodypart
*);
459 double GetStrengthExperience() const { return StrengthExperience
; }
460 double GetAgilityExperience() const { return AgilityExperience
; }
461 virtual void SignalPossibleUsabilityChange();
464 void UpdateLegArmorPictures(graphicdata
&, graphicdata
&, int) const;
466 double StrengthExperience
;
467 double AgilityExperience
;
468 int BaseKickStrength
;
470 double KickToHitValue
;
480 rightleg(const rightleg
&);
481 virtual int GetBodyPartIndex() const;
482 virtual int GetSpecialFlags() const;
490 leftleg(const leftleg
&);
491 virtual int GetBodyPartIndex() const;
492 virtual int GetSpecialFlags() const;
500 corpse(const corpse
&);
502 virtual int GetOfferValue(int) const;
503 virtual double GetWeaponStrength() const;
504 virtual truth
CanBeEatenByAI(ccharacter
*) const;
505 virtual int GetStrengthValue() const;
506 character
* GetDeceased() const { return Deceased
; }
507 void SetDeceased(character
*);
508 virtual void Save(outputfile
&) const;
509 virtual void Load(inputfile
&);
510 virtual truth
IsDestroyable(ccharacter
*) const;
511 virtual sLong
GetTruePrice() const;
512 virtual int GetMaterials() const { return 2; }
513 virtual truth
RaiseTheDead(character
*);
514 virtual void CalculateVolumeAndWeight();
515 virtual void CalculateEmitation();
516 virtual void SignalSpoil(material
*);
517 virtual truth
CanBePiledWith(citem
*, ccharacter
*) const;
518 virtual int GetSpoilLevel() const;
519 virtual material
* GetMaterial(int) const;
520 virtual head
* Behead();
521 virtual truth
CanBeCloned() const;
522 virtual int GetAttachedGod() const;
523 virtual void PreProcessForBone();
524 virtual void PostProcessForBone();
525 virtual void FinalProcessForBone();
526 virtual truth
SuckSoul(character
*, character
* = 0);
527 virtual character
* TryNecromancy(character
*);
528 virtual void Cannibalize();
529 virtual material
* GetConsumeMaterial(ccharacter
*, materialpredicate
) const;
530 virtual truth
DetectMaterial(cmaterial
*) const;
531 virtual void SetLifeExpectancy(int, int);
533 virtual void SignalDisappearance();
534 virtual truth
IsValuable() const;
535 virtual truth
AddRustLevelDescription(festring
&, truth
) const { return false; }
536 virtual truth
Necromancy(character
*);
537 virtual int GetSparkleFlags() const;
538 virtual truth
IsRusted() const { return false; }
539 virtual truth
CanBeHardened(ccharacter
*) const { return false; }
540 virtual truth
IsCorpse () const { return true; }
542 virtual void GenerateMaterials() { }
543 virtual col16
GetMaterialColorA(int) const;
544 virtual col16
GetMaterialColorB(int) const;
545 virtual alpha
GetAlphaA(int) const;
546 virtual alpha
GetAlphaB(int) const;
547 virtual truth
ShowMaterial() const { return false; }
548 virtual void AddPostFix(festring
&, int) const;
549 virtual v2
GetBitmapPos(int) const;
550 virtual int GetSize() const;
551 virtual int GetArticleMode() const;
552 virtual int GetRustDataA() const;
553 virtual truth
AddStateDescription(festring
&, truth
) const;
557 ITEM(eddytorso
, normaltorso
)
560 virtual int GetClassAnimationFrames() const { return 8; }
561 virtual v2
GetBitmapPos(int) const;
564 ITEM(largetorso
, normaltorso
)
567 virtual void SignalStackAdd(stackslot
*, void (stack::*)(item
*, truth
));
568 virtual int GetSquareIndex(v2
) const;
569 virtual void Draw(blitdata
&) const;
570 virtual void CalculateSquaresUnder() { SquaresUnder
= 4; }
572 virtual v2
GetBitmapPos(int I
) const { return GetLargeBitmapPos(BitmapPos
, I
); }
573 virtual void ModifyAnimationFrames(int& AF
) const { AF
<<= 2; }
576 ITEM(largecorpse
, corpse
)
579 virtual void SignalStackAdd(stackslot
*, void (stack::*)(item
*, truth
));
580 virtual int GetSquareIndex(v2
) const;
581 virtual void Draw(blitdata
&) const;
582 virtual void CalculateSquaresUnder() { SquaresUnder
= 4; }
584 virtual v2
GetBitmapPos(int I
) const { return GetLargeBitmapPos(item::GetBitmapPos(I
), I
); }
585 virtual void ModifyAnimationFrames(int& AF
) const { AF
<<= 2; }
588 ITEM(ennerhead
, head
)
591 virtual int GetClassAnimationFrames() const { return 32; }
592 virtual v2
GetBitmapPos(int) const;
595 ITEM(playerkindhead
, head
)
599 playerkindhead(const playerkindhead
& Head
) : mybase(Head
) { }
600 virtual void Save(outputfile
&) const;
601 virtual void Load(inputfile
&);
602 virtual truth
UpdateArmorPictures();
603 virtual void DrawArmor(blitdata
&) const;
604 virtual truth
ShowFluids() const { return true; }
605 virtual truth
IsAnimated() const { return true; }
607 graphicdata HelmetGraphicData
;
610 ITEM(playerkindtorso
, humanoidtorso
)
613 playerkindtorso() { }
614 playerkindtorso(const playerkindtorso
& Torso
) : mybase(Torso
) { }
615 virtual void Save(outputfile
&) const;
616 virtual void Load(inputfile
&);
617 virtual truth
UpdateArmorPictures();
618 virtual void DrawArmor(blitdata
&) const;
619 virtual void SignalVolumeAndWeightChange();
620 virtual truth
ShowFluids() const { return true; }
621 virtual truth
IsAnimated() const { return true; }
623 graphicdata TorsoArmorGraphicData
;
624 graphicdata CloakGraphicData
;
625 graphicdata BeltGraphicData
;
628 ITEM(playerkindrightarm
, rightarm
)
631 playerkindrightarm() { }
632 playerkindrightarm(const playerkindrightarm
& Arm
) : mybase(Arm
) { }
633 virtual void Save(outputfile
&) const;
634 virtual void Load(inputfile
&);
635 virtual truth
UpdateArmorPictures();
636 virtual void DrawArmor(blitdata
&) const;
637 virtual truth
ShowFluids() const { return true; }
638 virtual truth
IsAnimated() const { return true; }
640 graphicdata ArmArmorGraphicData
;
641 graphicdata GauntletGraphicData
;
644 ITEM(playerkindleftarm
, leftarm
)
647 playerkindleftarm() { }
648 playerkindleftarm(const playerkindleftarm
& Arm
) : mybase(Arm
) { }
649 virtual void Save(outputfile
&) const;
650 virtual void Load(inputfile
&);
651 virtual truth
UpdateArmorPictures();
652 virtual void DrawArmor(blitdata
&) const;
653 virtual truth
ShowFluids() const { return true; }
654 virtual truth
IsAnimated() const { return true; }
656 graphicdata ArmArmorGraphicData
;
657 graphicdata GauntletGraphicData
;
660 ITEM(playerkindgroin
, groin
)
663 playerkindgroin() { }
664 playerkindgroin(const playerkindgroin
& Groin
) : mybase(Groin
) { }
665 virtual void Save(outputfile
&) const;
666 virtual void Load(inputfile
&);
667 virtual truth
UpdateArmorPictures();
668 virtual void DrawArmor(blitdata
&) const;
669 virtual truth
ShowFluids() const { return true; }
670 virtual truth
IsAnimated() const { return true; }
672 graphicdata GroinArmorGraphicData
;
675 ITEM(playerkindrightleg
, rightleg
)
678 playerkindrightleg() { }
679 playerkindrightleg(const playerkindrightleg
& Leg
) : mybase(Leg
) { }
680 virtual void Save(outputfile
&) const;
681 virtual void Load(inputfile
&);
682 virtual truth
UpdateArmorPictures();
683 virtual void DrawArmor(blitdata
&) const;
684 virtual truth
ShowFluids() const { return true; }
685 virtual truth
IsAnimated() const { return true; }
687 graphicdata LegArmorGraphicData
;
688 graphicdata BootGraphicData
;
691 ITEM(playerkindleftleg
, leftleg
)
694 playerkindleftleg() { }
695 playerkindleftleg(const playerkindleftleg
& Leg
) : mybase(Leg
) { }
696 virtual void Save(outputfile
&) const;
697 virtual void Load(inputfile
&);
698 virtual truth
UpdateArmorPictures();
699 virtual void DrawArmor(blitdata
&) const;
700 virtual truth
ShowFluids() const { return true; }
701 virtual truth
IsAnimated() const { return true; }
703 graphicdata LegArmorGraphicData
;
704 graphicdata BootGraphicData
;
707 ITEM(magicmushroomtorso
, normaltorso
)
710 virtual int GetClassAnimationFrames() const { return 64; }
711 virtual v2
GetBitmapPos(int) const;
714 ITEM(dogtorso
, normaltorso
)
717 virtual void Draw(blitdata
&) const;
718 virtual int GetClassAnimationFrames() const { return 16; }
719 virtual v2
GetBitmapPos(int) const;
722 ITEM(blinkdogtorso
, dogtorso
)
725 virtual alpha
GetAlphaA(int) const;
726 virtual int GetClassAnimationFrames() const { return 64; }
729 ITEM(mysticfrogtorso
, normaltorso
)
732 virtual truth
AllowAlphaEverywhere() const { return true; }
734 virtual int GetClassAnimationFrames() const { return 128; }
735 virtual col16
GetOutlineColor(int) const;
736 virtual alpha
GetOutlineAlpha(int) const;
739 ITEM(lobhsetorso
, largetorso
)
742 virtual int GetClassAnimationFrames() const { return 32; }
743 virtual col16
GetMaterialColorD(int) const;
746 ITEM(battorso
, normaltorso
)
749 virtual int GetClassAnimationFrames() const { return 16; }
750 virtual v2
GetBitmapPos(int) const;
753 ITEM(spidertorso
, normaltorso
)
756 virtual int GetClassAnimationFrames() const { return 16; }
757 virtual v2
GetBitmapPos(int) const;
761 ITEM(menatrixtorso
, largetorso
)