raze/source/games/blood/src/dude.h
2022-10-30 16:51:16 +01:00

102 lines
2.7 KiB
C

//-------------------------------------------------------------------------
/*
Copyright (C) 2010-2019 EDuke32 developers and contributors
Copyright (C) 2019 Nuke.YKT
This file is part of NBlood.
NBlood is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
//-------------------------------------------------------------------------
#pragma once
BEGIN_BLD_NS
// By NoOne: renamed dude struct
struct DUDEINFO {
int16_t seqStartID; // seq
int16_t startHealth; // health
uint16_t mass; // mass
int at6; // unused?
uint8_t clipdist; // clipdist
int eyeHeight;
int aimHeight; // used by just Cerberus
int hearDist; // hear radius
int seeDist; // sight radius
int periphery; // periphery
int meleeDist; // unused?
int fleeHealth; // at which hp level enemy will turn in burning dude
int hinderDamage; // recoil damage
int changeTarget; // chance to change target when attacked someone else
int changeTargetKin; // chance to change target when attacked by same type
int alertChance;
uint8_t lockOut; // indicates if this dude can trigger something via trigger flags
int frontSpeed; // acceleration
int sideSpeed; // dodge
int backSpeed; // backward speed (unused)
int angSpeed; // turn speed
int nGibType[3]; // which gib used when explode dude
int startDamage[7]; // start damage shift
int damageVal[7]; // real damage? Hmm?
int at8c; // unused ?
int at90; // unused ?
// converters to floating point format
inline double HearDist() const
{
return hearDist * maptoworld;
}
inline double SeeDist() const
{
return seeDist * maptoworld;
}
inline double MeleeDist() const
{
return meleeDist * maptoworld;
}
inline DAngle Periphery() const
{
return mapangle(periphery);
}
inline double FrontSpeed() const
{
return FixedToFloat(frontSpeed);
}
inline DAngle TurnRange() const
{
return DAngle::fromQ16(angSpeed << 3);
}
double fClipdist() const { return clipdist * 0.25; }
};
extern DUDEINFO dudeInfo[kDudeMax - kDudeBase];
extern DUDEINFO gPlayerTemplate[4];
extern DUDEINFO fakeDudeInfo;
inline DUDEINFO* getDudeInfo(int const nType)
{
if (nType >= kDudeBase && nType < kDudeMax)
return &dudeInfo[nType - kDudeBase];
return &fakeDudeInfo;
}
END_BLD_NS