extern XYZ windvector;
-std::vector<std::shared_ptr<Person>> Person::players(1, std::shared_ptr<Person>(new Person()));
+std::vector<std::shared_ptr<Person>> Person::players;
Person::Person()
: whichpatchx(0)
, skiddingdelay(0)
, deathbleeding(0)
, tempdeltav(0)
- ,
- damagetolerance(200)
+ , damagetolerance(0)
, damage(0)
, permanentdamage(0)
, superpermanentdamage(0)
, lastcollide(0)
, dead(0)
- ,
- jumppower(5)
+ , jumppower(5)
, onground(false)
- ,
- wentforweapon(0)
- ,
+ , wentforweapon(0)
- calcrot(false)
- ,
+ , calcrot(false)
- facing()
- ,
+ , facing()
- bleeding(0)
+ , bleeding(0)
, bleedx(0)
, bleedy(0)
, direction(0)
, neckspurtdelay(0)
, neckspurtparticledelay(0)
, neckspurtamount(0)
- ,
- whichskin(0)
+ , whichskin(0)
, rabbitkickragdoll(false)
- ,
- tempanimation()
- ,
+ , tempanimation("Tempanim", lowheight, neutral)
- jumpclimb(false)
+ , jumpclimb(false)
{
+ damagetolerance = PersonType::types[creature].defaultDamageTolerance;
setProportions(1, 1, 1, 1);
}
loaded = true;
- if (creature == wolftype) {
- damagetolerance = 300;
- }
+ damagetolerance = PersonType::types[creature].defaultDamageTolerance;
if (scale < 0) {
- if (creature == wolftype) {
- scale = .23;
- } else {
- scale = .2;
- }
+ scale = PersonType::types[creature].defaultScale;
}
oldcoords = coords;
realoldcoords = coords;
}
+void Person::changeCreatureType(person_type type)
+{
+ creature = type;
+ whichskin = 0;
+ skeletonLoad(type == rabbittype);
+ scale = PersonType::types[creature].defaultScale;
+ damagetolerance = PersonType::types[creature].defaultDamageTolerance;
+}
+
void Person::skeletonLoad(bool clothes)
{
skeleton.id = id;
if (victim->aitype == gethelptype) {
victim->DoDamage(victim->damagetolerance - victim->damage);
}
- //victim->DoDamage(30);
- if (creature == wolftype) {
+ if (PersonType::types[creature].hasClaws) {
DoBloodBig(0, 255);
emit_sound_at(clawslicesound, victim->coords);
victim->spurt = 1;
if (id == 0) {
camerashake += .4;
}
- if (Random() % 2 || creature == wolftype) {
+ if (Random() % 2 || PersonType::types[creature].hasClaws) {
victim->spurt = 1;
DoBlood(.2, 250);
- if (creature == wolftype) {
+ if (PersonType::types[creature].hasClaws) {
DoBloodBig(0, 250);
}
}
if (!Tutorial::active) {
emit_sound_at(heavyimpactsound, victim->coords, 128.);
}
- if (creature == wolftype) {
+ if (PersonType::types[creature].hasClaws) {
emit_sound_at(clawslicesound, victim->coords, 128.);
victim->spurt = 1;
victim->DoBloodBig(2 / victim->armorhead, 175);
if (id == 0) {
camerashake += .4;
}
- if (Random() % 2 || creature == wolftype) {
+ if (Random() % 2 || PersonType::types[creature].hasClaws) {
victim->spurt = 1;
- if (creature == wolftype) {
+ if (PersonType::types[creature].hasClaws) {
DoBloodBig(0, 235);
}
}
emit_sound_at(whooshhitsound, victim->coords);
- if (creature == wolftype) {
+ if (PersonType::types[creature].hasClaws) {
emit_sound_at(clawslicesound, victim->coords, 128.);
victim->spurt = 1;
victim->DoBloodBig(2, 175);
if (!Tutorial::active) {
emit_sound_at(heavyimpactsound, victim->coords, 160.);
}
- if (creature == wolftype) {
+ if (PersonType::types[creature].hasClaws) {
emit_sound_at(clawslicesound, victim->coords, 128.);
victim->spurt = 1;
victim->DoBloodBig(2 / victim->armorhead, 175);
if (!Tutorial::active) {
emit_sound_at(heavyimpactsound, victim->coords, 160.);
}
- if (creature == wolftype) {
+ if (PersonType::types[creature].hasClaws) {
emit_sound_at(clawslicesound, victim->coords, 128.);
victim->spurt = 1;
victim->DoBloodBig(2 / victim->armorhead, 175);
if (id == 0) {
camerashake += .4;
}
- if (Random() % 2 || creature == wolftype) {
+ if (Random() % 2 || PersonType::types[creature].hasClaws) {
victim->spurt = 1;
}
emit_sound_at(staffheadsound, victim->coords);
if (id == 0) {
camerashake += .4;
}
- if (Random() % 2 || creature == wolftype) {
+ if (Random() % 2 || PersonType::types[creature].hasClaws) {
victim->spurt = 1;
}
emit_sound_at(staffheadsound, victim->coords);
if (id == 0) {
camerashake += .4;
}
- if (Random() % 2 || creature == wolftype) {
+ if (Random() % 2 || PersonType::types[creature].hasClaws) {
victim->spurt = 1;
}
emit_sound_at(staffbodysound, victim->coords);
if (victim->howactive == typesleeping) {
victim->DoDamage(damagemult * 150 / victim->protectionhead);
}
- if (creature == wolftype) {
+ if (PersonType::types[creature].hasClaws) {
emit_sound_at(clawslicesound, victim->coords, 128.);
victim->spurt = 1;
victim->DoBloodBig(2 / victim->armorhead, 175);
}
victim->Puff(abdomen);
victim->DoDamage(damagemult * 30 / victim->protectionhigh);
- if (creature == wolftype) {
+ if (PersonType::types[creature].hasClaws) {
emit_sound_at(clawslicesound, victim->coords, 128.);
victim->spurt = 1;
victim->DoBloodBig(2 / victim->armorhigh, 170);
if (!Tutorial::active) {
emit_sound_at(heavyimpactsound, victim->coords, 128.);
}
- if (creature == wolftype) {
+ if (PersonType::types[creature].hasClaws) {
emit_sound_at(clawslicesound, victim->coords, 128);
victim->spurt = 1;
victim->DoBloodBig(2 / victim->armorhigh, 170);
award_bonus(id, Reversal);
bool doslice;
- doslice = 0;
- if (weaponactive != -1 || creature == wolftype) {
- doslice = 1;
- }
- if (creature == rabbittype && weaponactive != -1) {
- if (weapons[weaponids[0]].getType() == staff) {
- doslice = 0;
- }
+ if (weaponactive == -1) {
+ doslice = PersonType::types[creature].hasClaws;
+ } else {
+ doslice = (weapons[weaponids[0]].getType() != staff);
}
if (doslice) {
- if (weaponactive != -1) {
+ if (weaponactive == -1) {
+ emit_sound_at(clawslicesound, victim->coords, 128.);
+ victim->spurt = 1;
+ victim->DoBloodBig(2 / victim->armorhigh, 175);
+ } else {
victim->DoBloodBig(2 / victim->armorhigh, 225);
emit_sound_at(knifeslicesound, victim->coords);
if (bloodtoggle && !weapons[weaponids[weaponactive]].bloody) {
}
weapons[weaponids[weaponactive]].blooddrip += 3;
}
- if (weaponactive == -1 && creature == wolftype) {
- emit_sound_at(clawslicesound, victim->coords, 128.);
- victim->spurt = 1;
- victim->DoBloodBig(2 / victim->armorhigh, 175);
- }
}
}
victim->damage = victim->damagetolerance;
victim->permanentdamage = victim->damagetolerance - 1;
bool doslice;
- doslice = 0;
- if (weaponactive != -1 || creature == wolftype) {
- doslice = 1;
- }
- if (creature == rabbittype && weaponactive != -1) {
- if (weapons[weaponids[0]].getType() == staff) {
- doslice = 0;
- }
+ if (weaponactive == -1) {
+ doslice = PersonType::types[creature].hasClaws;
+ } else {
+ doslice = (weapons[weaponids[0]].getType() != staff);
}
if (doslice) {
- if (weaponactive != -1) {
+ if (weaponactive == -1) {
+ emit_sound_at(clawslicesound, victim->coords, 128.);
+ victim->spurt = 1;
+ victim->DoBloodBig(2, 175);
+ } else {
victim->DoBloodBig(200, 225);
emit_sound_at(knifeslicesound, victim->coords);
if (bloodtoggle) {
}
weapons[weaponids[weaponactive]].blooddrip += 5;
}
-
- if (creature == wolftype && weaponactive == -1) {
- emit_sound_at(clawslicesound, victim->coords, 128.);
- victim->spurt = 1;
- victim->DoBloodBig(2, 175);
- }
}
award_bonus(id, spinecrusher);
}
}
}
bool doslice;
- doslice = 0;
- if (weaponactive != -1 || creature == wolftype) {
- doslice = 1;
- }
- if (creature == rabbittype && weaponactive != -1) {
- if (weapons[weaponids[0]].getType() == staff) {
- doslice = 0;
- }
+ if (weaponactive == -1) {
+ doslice = PersonType::types[creature].hasClaws;
+ } else {
+ doslice = (weapons[weaponids[0]].getType() != staff);
}
if (doslice) {
- if (weaponactive != -1) {
+ if (weaponactive == -1) {
+ emit_sound_at(clawslicesound, victim->coords, 128.);
+ victim->spurt = 1;
+ victim->DoBloodBig(2 / victim->armorhead, 175);
+ } else {
victim->DoBloodBig(2 / victim->armorhead, 225);
emit_sound_at(knifeslicesound, victim->coords);
if (bloodtoggle && !weapons[weaponids[weaponactive]].bloody) {
}
weapons[weaponids[weaponactive]].blooddrip += 3;
}
- if (weaponactive == -1 && creature == wolftype) {
- emit_sound_at(clawslicesound, victim->coords, 128.);
- victim->spurt = 1;
- victim->DoBloodBig(2 / victim->armorhead, 175);
- }
}
award_bonus(id, Reversal);