extern XYZ windvector;
std::vector<std::shared_ptr<Person>> Person::players(1, std::shared_ptr<Person>(new Person()));
-std::vector<PersonType> PersonType::types;
-
-void PersonType::Load()
-{
- types.resize(2);
-
- /* Wolf */
- types[wolftype].proportions[0] = 1.1;
- types[wolftype].proportions[1] = 1.1;
- types[wolftype].proportions[2] = 1.1;
- types[wolftype].proportions[3] = 1.1;
-
- types[wolftype].animRun = wolfrunanim;
- types[wolftype].animRunning = wolfrunninganim;
- types[wolftype].animCrouch = wolfcrouchanim;
- types[wolftype].animStop = wolfstopanim;
- types[wolftype].animLanding = wolflandanim;
- types[wolftype].animLandingHard = wolflandhardanim;
-
- types[wolftype].soundsAttack[0] = barksound;
- types[wolftype].soundsAttack[1] = bark2sound;
- types[wolftype].soundsAttack[2] = bark3sound;
- types[wolftype].soundsAttack[3] = barkgrowlsound;
- types[wolftype].soundsTalk[0] = growlsound;
- types[wolftype].soundsTalk[1] = growl2sound;
-
- types[wolftype].figureFileName = "Skeleton/BasicFigureWolf";
- types[wolftype].lowFigureFileName = "Skeleton/BasicFigureWolfLow";
- types[wolftype].clothesFileName = "Skeleton/RabbitBelt";
- types[wolftype].modelFileNames[0] = "Models/Wolf.solid";
- types[wolftype].modelFileNames[1] = "Models/Wolf2.solid";
- types[wolftype].modelFileNames[2] = "Models/Wolf3.solid";
- types[wolftype].modelFileNames[3] = "Models/Wolf4.solid";
- types[wolftype].modelFileNames[4] = "Models/Wolf5.solid";
- types[wolftype].modelFileNames[5] = "Models/Wolf6.solid";
- types[wolftype].modelFileNames[6] = "Models/Wolf7.solid";
- types[wolftype].lowModelFileName = "Models/WolfLow.solid";
- types[wolftype].modelClothesFileName = "Models/Belt.solid";
-
- types[wolftype].skins.resize(3);
- types[wolftype].skins[0] = "Textures/Wolf.jpg";
- types[wolftype].skins[1] = "Textures/DarkWolf.jpg";
- types[wolftype].skins[2] = "Textures/SnowWolf.jpg";
-
- /* Rabbit */
- types[rabbittype].proportions[0] = 1.2;
- types[rabbittype].proportions[1] = 1.05;
- types[rabbittype].proportions[2] = 1;
- types[rabbittype].proportions[3] = 1.1;
- types[rabbittype].proportions[3].y = 1.05;
-
- types[rabbittype].animRun = runanim;
- types[rabbittype].animRunning = rabbitrunninganim;
- types[rabbittype].animCrouch = crouchanim;
- types[rabbittype].animStop = stopanim;
- types[rabbittype].animLanding = landanim;
- types[rabbittype].animLandingHard = landhardanim;
-
- types[rabbittype].soundsAttack[0] = rabbitattacksound;
- types[rabbittype].soundsAttack[1] = rabbitattack2sound;
- types[rabbittype].soundsAttack[2] = rabbitattack3sound;
- types[rabbittype].soundsAttack[3] = rabbitattack4sound;
- types[rabbittype].soundsTalk[0] = rabbitchitter;
- types[rabbittype].soundsTalk[1] = rabbitchitter2;
-
- types[rabbittype].figureFileName = "Skeleton/BasicFigure";
- types[rabbittype].lowFigureFileName = "Skeleton/BasicFigureLow";
- types[rabbittype].clothesFileName = "Skeleton/RabbitBelt";
- types[rabbittype].modelFileNames[0] = "Models/Body.solid";
- types[rabbittype].modelFileNames[1] = "Models/Body2.solid";
- types[rabbittype].modelFileNames[2] = "Models/Body3.solid";
- types[rabbittype].modelFileNames[3] = "Models/Body4.solid";
- types[rabbittype].modelFileNames[4] = "Models/Body5.solid";
- types[rabbittype].modelFileNames[5] = "Models/Body6.solid";
- types[rabbittype].modelFileNames[6] = "Models/Body7.solid";
- types[rabbittype].lowModelFileName = "Models/BodyLow.solid";
- types[rabbittype].modelClothesFileName = "Models/Belt.solid";
-
- types[rabbittype].skins.resize(10);
- types[rabbittype].skins[0] = "Textures/Fur3.jpg";
- types[rabbittype].skins[1] = "Textures/Fur.jpg";
- types[rabbittype].skins[2] = "Textures/Fur2.jpg";
- types[rabbittype].skins[3] = "Textures/Lynx.jpg";
- types[rabbittype].skins[4] = "Textures/Otter.jpg";
- types[rabbittype].skins[5] = "Textures/Opal.jpg";
- types[rabbittype].skins[6] = "Textures/Sable.jpg";
- types[rabbittype].skins[7] = "Textures/Chocolate.jpg";
- types[rabbittype].skins[8] = "Textures/BW2.jpg";
- types[rabbittype].skins[9] = "Textures/WB2.jpg";
-}
Person::Person()
: whichpatchx(0)
loaded = true;
+ if (creature == wolftype) {
+ damagetolerance = 300;
+ }
+
if (scale < 0) {
if (creature == wolftype) {
scale = .23;
- damagetolerance = 300;
} else {
scale = .2;
}
*/
int Person::getIdle()
{
- if (Dialog::inDialog() && (howactive == typeactive) && (creature == rabbittype)) {
- return talkidleanim;
+ if (Dialog::inDialog() && (howactive == typeactive) && PersonType::types[creature].hasAnimTalkIdle()) {
+ return PersonType::types[creature].animTalkIdle;
}
if (hasvictim && (victim != this->shared_from_this())) {
if ((!victim->dead && victim->aitype != passivetype &&
victim->aitype != searchtype && aitype != passivetype && aitype != searchtype &&
victim->id < Person::players.size())) {
if ((aitype == playercontrolled && stunned <= 0 && weaponactive == -1) || pause) {
- if (creature == rabbittype) {
- return fightidleanim;
- }
- if (creature == wolftype) {
- return wolfidle;
- }
+ return PersonType::types[creature].animFightIdle;
}
if (aitype == playercontrolled && stunned <= 0 && weaponactive != -1) {
if (weapons[weaponids[weaponactive]].getType() == knife) {
if (howactive == typedead4) {
return dead4anim;
}
- if (creature == rabbittype) {
- return bounceidleanim;
- }
- if (creature == wolftype) {
- return wolfidle;
- }
- return 0;
+ return PersonType::types[creature].animBounceIdle;
}
/* FUNCTION