X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;ds=sidebyside;f=Source%2FGameTick.cpp;h=ed22ee26b33e57f299ee51cd61f5c9fc450b8013;hb=d5f64d3689e1ce594e22ad0f6d372cee143872fd;hp=f9a3f88a789bc15a21c74de39aef131b2bcf184a;hpb=51a0860281c8978f5404c730eb809fb455d99aea;p=lugaru.git diff --git a/Source/GameTick.cpp b/Source/GameTick.cpp index f9a3f88..ed22ee2 100644 --- a/Source/GameTick.cpp +++ b/Source/GameTick.cpp @@ -102,7 +102,7 @@ extern float envsoundlife[30]; extern float usermousesensitivity; extern bool ismotionblur; extern bool showdamagebar; // (des)activate the damage bar -extern bool decals; +extern bool decalstoggle; extern bool skyboxtexture; extern float skyboxr; extern float skyboxg; @@ -502,8 +502,9 @@ void Game::Loadlevel(int which) char buf[32]; snprintf(buf, 32, "map%d", which + 1); // challenges Loadlevel(buf); - } else + } else { Loadlevel("mapsave"); + } } void Game::Loadlevel(const std::string& name, bool tutorial) @@ -606,7 +607,7 @@ void Game::Loadlevel(const std::string& name, bool tutorial) } if (!stealthloading) { - terrain.numdecals = 0; + terrain.decals.clear(); Sprite::deleteSprites(); for (int i = 0; i < subdivision; i++) { @@ -706,6 +707,10 @@ void Game::Loadlevel(const std::string& name, bool tutorial) funpackf(tfile, "Bi", &environment); + if (environment != oldenvironment) + Setenvironment(environment); + oldenvironment = environment; + Object::LoadObjectsFromFile(tfile, stealthloading); if (mapvers >= 7) { @@ -769,9 +774,6 @@ void Game::Loadlevel(const std::string& name, bool tutorial) funpackf(tfile, "Bf Bf Bf Bf", &mapcenter.x, &mapcenter.y, &mapcenter.z, &mapradius); SetUpLighting(); - if (environment != oldenvironment) - Setenvironment(environment); - oldenvironment = environment; if (!stealthloading) { Object::AddObjectsToTerrain(); @@ -924,9 +926,6 @@ void Game::Loadlevel(const std::string& name, bool tutorial) oldmusicvolume[2] = 0; oldmusicvolume[3] = 0; - if (!firstload) - firstload = 1; - leveltime = 0; wonleveltime = 0; visibleloading = false; @@ -1586,10 +1585,8 @@ void doDevKeys() void doJumpReversals() { - for (unsigned k = 0; k < Person::players.size(); k++) - for (unsigned i = k; i < Person::players.size(); i++) { - if (i == k) - continue; + for (unsigned k = 0; k < Person::players.size(); k++) { + for (unsigned i = k + 1; i < Person::players.size(); i++) { if ( Person::players[k]->skeleton.free == 0 && Person::players[i]->skeleton.oldfree == 0 && (Person::players[i]->animTarget == jumpupanim || @@ -1682,6 +1679,7 @@ void doJumpReversals() } } } + } } void doAerialAcrobatics() @@ -1776,13 +1774,13 @@ void doAerialAcrobatics() lowpointtarget = lowpoint + DoRotation(Person::players[k]->facing, 0, -90, 0) * 1.5; XYZ tempcoords1 = lowpoint; whichhit = Object::objects[i]->model.LineCheck(&lowpoint, &lowpointtarget, &colpoint, &Object::objects[i]->position, &Object::objects[i]->yaw); - if (whichhit != -1 && fabs(Object::objects[i]->model.facenormals[whichhit].y) < .3) { - Person::players[k]->setAnimation(walljumpleftanim); + if (whichhit != -1 && fabs(Object::objects[i]->model.Triangles[whichhit].facenormal.y) < .3) { + Person::players[k]->setTargetAnimation(walljumpleftanim); emit_sound_at(movewhooshsound, Person::players[k]->coords); if (k == 0) pause_sound(whooshsound); - lowpointtarget = DoRotation(Object::objects[i]->model.facenormals[whichhit], 0, Object::objects[i]->yaw, 0); + lowpointtarget = DoRotation(Object::objects[i]->model.Triangles[whichhit].facenormal, 0, Object::objects[i]->yaw, 0); Person::players[k]->yaw = -asin(0 - lowpointtarget.x) * 180 / M_PI; if (lowpointtarget.z < 0) Person::players[k]->yaw = 180 - Person::players[k]->yaw; @@ -1794,13 +1792,13 @@ void doAerialAcrobatics() lowpoint = tempcoords1; lowpointtarget = lowpoint + DoRotation(Person::players[k]->facing, 0, 90, 0) * 1.5; whichhit = Object::objects[i]->model.LineCheck(&lowpoint, &lowpointtarget, &colpoint, &Object::objects[i]->position, &Object::objects[i]->yaw); - if (whichhit != -1 && fabs(Object::objects[i]->model.facenormals[whichhit].y) < .3) { - Person::players[k]->setAnimation(walljumprightanim); + if (whichhit != -1 && fabs(Object::objects[i]->model.Triangles[whichhit].facenormal.y) < .3) { + Person::players[k]->setTargetAnimation(walljumprightanim); emit_sound_at(movewhooshsound, Person::players[k]->coords); if (k == 0) pause_sound(whooshsound); - lowpointtarget = DoRotation(Object::objects[i]->model.facenormals[whichhit], 0, Object::objects[i]->yaw, 0); + lowpointtarget = DoRotation(Object::objects[i]->model.Triangles[whichhit].facenormal, 0, Object::objects[i]->yaw, 0); Person::players[k]->yaw = -asin(0 - lowpointtarget.x) * 180 / M_PI; if (lowpointtarget.z < 0) Person::players[k]->yaw = 180 - Person::players[k]->yaw; @@ -1812,13 +1810,13 @@ void doAerialAcrobatics() lowpoint = tempcoords1; lowpointtarget = lowpoint + Person::players[k]->facing * 2; whichhit = Object::objects[i]->model.LineCheck(&lowpoint, &lowpointtarget, &colpoint, &Object::objects[i]->position, &Object::objects[i]->yaw); - if (whichhit != -1 && fabs(Object::objects[i]->model.facenormals[whichhit].y) < .3) { - Person::players[k]->setAnimation(walljumpbackanim); + if (whichhit != -1 && fabs(Object::objects[i]->model.Triangles[whichhit].facenormal.y) < .3) { + Person::players[k]->setTargetAnimation(walljumpbackanim); emit_sound_at(movewhooshsound, Person::players[k]->coords); if (k == 0) pause_sound(whooshsound); - lowpointtarget = DoRotation(Object::objects[i]->model.facenormals[whichhit], 0, Object::objects[i]->yaw, 0); + lowpointtarget = DoRotation(Object::objects[i]->model.Triangles[whichhit].facenormal, 0, Object::objects[i]->yaw, 0); Person::players[k]->yaw = -asin(0 - lowpointtarget.x) * 180 / M_PI; if (lowpointtarget.z < 0) Person::players[k]->yaw = 180 - Person::players[k]->yaw; @@ -1830,13 +1828,13 @@ void doAerialAcrobatics() lowpoint = tempcoords1; lowpointtarget = lowpoint - Person::players[k]->facing * 2; whichhit = Object::objects[i]->model.LineCheck(&lowpoint, &lowpointtarget, &colpoint, &Object::objects[i]->position, &Object::objects[i]->yaw); - if (whichhit != -1 && fabs(Object::objects[i]->model.facenormals[whichhit].y) < .3) { - Person::players[k]->setAnimation(walljumpfrontanim); + if (whichhit != -1 && fabs(Object::objects[i]->model.Triangles[whichhit].facenormal.y) < .3) { + Person::players[k]->setTargetAnimation(walljumpfrontanim); emit_sound_at(movewhooshsound, Person::players[k]->coords); if (k == 0) pause_sound(whooshsound); - lowpointtarget = DoRotation(Object::objects[i]->model.facenormals[whichhit], 0, Object::objects[i]->yaw, 0); + lowpointtarget = DoRotation(Object::objects[i]->model.Triangles[whichhit].facenormal, 0, Object::objects[i]->yaw, 0); Person::players[k]->yaw = -asin(0 - lowpointtarget.x) * 180 / M_PI; if (lowpointtarget.z < 0) Person::players[k]->yaw = 180 - Person::players[k]->yaw; @@ -1979,7 +1977,7 @@ void doAerialAcrobatics() lowpoint.y += (float)j / 13; lowpointtarget = lowpoint + facing * 1.3; flatfacing = Person::players[k]->coords; - Person::players[k]->coords = colpoint - DoRotation(Object::objects[i]->model.facenormals[whichhit], 0, Object::objects[k]->yaw, 0) * .01; + Person::players[k]->coords = colpoint - DoRotation(Object::objects[i]->model.Triangles[whichhit].facenormal, 0, Object::objects[k]->yaw, 0) * .01; Person::players[k]->coords.y = lowpointtarget.y - .07; Person::players[k]->currentoffset = (flatfacing - Person::players[k]->coords) / Person::players[k]->scale; @@ -1990,7 +1988,7 @@ void doAerialAcrobatics() } emit_sound_at(jumpsound, Person::players[k]->coords, 128.); - lowpointtarget = DoRotation(Object::objects[i]->model.facenormals[whichhit], 0, Object::objects[i]->yaw, 0); + lowpointtarget = DoRotation(Object::objects[i]->model.Triangles[whichhit].facenormal, 0, Object::objects[i]->yaw, 0); Person::players[k]->yaw = -asin(0 - lowpointtarget.x) * 180 / M_PI; if (lowpointtarget.z < 0) Person::players[k]->yaw = 180 - Person::players[k]->yaw; @@ -2011,7 +2009,7 @@ void doAerialAcrobatics() Person::players[k]->frameTarget = 1; //hang ledge (?) if (j > 25) { - Person::players[k]->setAnimation(hanganim); + Person::players[k]->setTargetAnimation(hanganim); Person::players[k]->jumppower = 0; } } @@ -2042,7 +2040,7 @@ void doAerialAcrobatics() //stagger off ledge (?) if (Person::players[k]->animTarget == staggerbackhighanim || Person::players[k]->animTarget == staggerbackhardanim) Person::players[k]->RagDoll(0); - Person::players[k]->setAnimation(jumpdownanim); + Person::players[k]->setTargetAnimation(jumpdownanim); if (!k) emit_sound_at(whooshsound, Person::players[k]->coords, 128.); @@ -2120,7 +2118,7 @@ void doAttacks() Person::players[i]->animTarget == staffhitanim || Person::players[i]->animTarget == staffspinhitanim) if (distsq(&Person::players[k]->coords, &Person::players[i]->coords) < 6.5 && !Person::players[i]->skeleton.free) { - Person::players[k]->setAnimation(dodgebackanim); + Person::players[k]->setTargetAnimation(dodgebackanim); Person::players[k]->targetyaw = roughDirectionTo(Person::players[k]->coords, Person::players[i]->coords); Person::players[k]->targettilt2 = pitchTo(Person::players[k]->coords, Person::players[i]->coords); } @@ -2128,7 +2126,7 @@ void doAttacks() if (Person::players[k]->animTarget != dodgebackanim) { if (k == 0) numflipped++; - Person::players[k]->setAnimation(backhandspringanim); + Person::players[k]->setTargetAnimation(backhandspringanim); Person::players[k]->targetyaw = -yaw + 180; if (Person::players[k]->leftkeydown) Person::players[k]->targetyaw -= 45; @@ -2459,20 +2457,11 @@ void doAttacks() Person::players[i]->skeleton.free && Person::players[i]->skeleton.longdead > 1000) { Person::players[k]->animTarget = killanim; - //TODO: refactor this out, what does it do? - for (int j = 0; j < terrain.numdecals; j++) { - if ((terrain.decaltype[j] == blooddecal || terrain.decaltype[j] == blooddecalslow) && - terrain.decalalivetime[j] < 2) - terrain.DeleteDecal(j); - } + terrain.deleteDeadDecals(); for (unsigned int l = 0; l < Object::objects.size(); l++) { - if (Object::objects[l]->model.type == decalstype) - for (int j = 0; j < Object::objects[l]->model.numdecals; j++) { - if ((Object::objects[l]->model.decaltype[j] == blooddecal || - Object::objects[l]->model.decaltype[j] == blooddecalslow) && - Object::objects[l]->model.decalalivetime[j] < 2) - Object::objects[l]->model.DeleteDecal(j); - } + if (Object::objects[l]->model.type == decalstype) { + Object::objects[l]->model.deleteDeadDecals(); + } } } if (!Person::players[i]->dead || musictype != 2) @@ -2485,21 +2474,11 @@ void doAttacks() Person::players[i]->skeleton.free) && (!Person::players[i]->dead || musictype != stream_fighttheme)) { Person::players[k]->animTarget = dropkickanim; - for (int j = 0; j < terrain.numdecals; j++) { - if ((terrain.decaltype[j] == blooddecal || terrain.decaltype[j] == blooddecalslow) && - terrain.decalalivetime[j] < 2) { - terrain.DeleteDecal(j); - } - } + terrain.deleteDeadDecals(); for (unsigned int l = 0; l < Object::objects.size(); l++) { - if (Object::objects[l]->model.type == decalstype) - for (int j = 0; j < Object::objects[l]->model.numdecals; j++) { - if ((Object::objects[l]->model.decaltype[j] == blooddecal || - Object::objects[l]->model.decaltype[j] == blooddecalslow) && - Object::objects[l]->model.decalalivetime[j] < 2) { - Object::objects[l]->model.DeleteDecal(j); - } - } + if (Object::objects[l]->model.type == decalstype) { + Object::objects[l]->model.deleteDeadDecals(); + } } } } @@ -2577,7 +2556,7 @@ void doAttacks() Person::players[k]->rabbitkickenabled) || Person::players[k]->jumpkeydown)) { oldattackkey = 1; - Person::players[k]->setAnimation(rabbitkickanim); + Person::players[k]->setTargetAnimation(rabbitkickanim); } //update counts if (Animation::animations[Person::players[k]->animTarget].attack && k == 0) { @@ -2748,18 +2727,18 @@ void doPlayerCollisions() if (Person::players[k]->howactive == typeactive || hostile) if (Person::players[k]->isIdle()) { if (Person::players[k]->howactive < typesleeping) - Person::players[k]->setAnimation(Person::players[k]->getStop()); + Person::players[k]->setTargetAnimation(Person::players[k]->getStop()); else if (Person::players[k]->howactive == typesleeping) - Person::players[k]->setAnimation(getupfromfrontanim); + Person::players[k]->setTargetAnimation(getupfromfrontanim); if (!editorenabled) Person::players[k]->howactive = typeactive; } if (Person::players[i]->howactive == typeactive || hostile) if (Person::players[i]->isIdle()) { if (Person::players[i]->howactive < typesleeping) - Person::players[i]->setAnimation(Person::players[k]->getStop()); + Person::players[i]->setTargetAnimation(Person::players[k]->getStop()); else - Person::players[i]->setAnimation(getupfromfrontanim); + Person::players[i]->setTargetAnimation(getupfromfrontanim); if (!editorenabled) Person::players[i]->howactive = typeactive; } @@ -3518,7 +3497,7 @@ void Game::Tick() Person::players[i]->isIdle() || Person::players[i]->aitype != playercontrolled) { Person::players[i]->throwtogglekeydown = 1; - Person::players[i]->setAnimation(crouchremoveknifeanim); + Person::players[i]->setTargetAnimation(crouchremoveknifeanim); Person::players[i]->targetyaw = roughDirectionTo(Person::players[i]->coords, weapons[j].position); Person::players[i]->hasvictim = 0; } @@ -3546,7 +3525,7 @@ void Game::Tick() Person::players[i]->coords.y < weapons[j].position.y) { if (!Person::players[i]->isFlip()) { Person::players[i]->throwtogglekeydown = 1; - Person::players[i]->setAnimation(removeknifeanim); + Person::players[i]->setTargetAnimation(removeknifeanim); Person::players[i]->targetyaw = roughDirectionTo(Person::players[i]->coords, weapons[j].position); } if (Person::players[i]->isFlip()) { @@ -3594,7 +3573,7 @@ void Game::Tick() Person::players[i]->throwtogglekeydown = 1; Person::players[i]->victim = Person::players[j]; Person::players[i]->hasvictim = 1; - Person::players[i]->setAnimation(crouchremoveknifeanim); + Person::players[i]->setTargetAnimation(crouchremoveknifeanim); Person::players[i]->targetyaw = roughDirectionTo(Person::players[i]->coords, Person::players[j]->coords); } if (Person::players[i]->animTarget == rollanim || Person::players[i]->animTarget == backhandspringanim) { @@ -3691,7 +3670,7 @@ void Game::Tick() if (!Person::players[i]->isFlip()) { Person::players[i]->throwtogglekeydown = 1; Person::players[i]->victim = Person::players[j]; - Person::players[i]->setAnimation(knifethrowanim); + Person::players[i]->setTargetAnimation(knifethrowanim); Person::players[i]->targetyaw = roughDirectionTo(Person::players[i]->coords, Person::players[j]->coords); Person::players[i]->targettilt2 = pitchTo(Person::players[i]->coords, Person::players[j]->coords); } @@ -3755,7 +3734,7 @@ void Game::Tick() isgood = false; if (isgood && Person::players[i]->creature != wolftype) { if (Person::players[i]->isIdle() && Person::players[i]->num_weapons && weapons[Person::players[i]->weaponids[0]].getType() == knife) { - Person::players[i]->setAnimation(drawrightanim); + Person::players[i]->setTargetAnimation(drawrightanim); Person::players[i]->drawtogglekeydown = 1; } if ((Person::players[i]->isIdle() || @@ -3764,11 +3743,11 @@ void Game::Tick() Person::players[i]->isRun())) && Person::players[i]->num_weapons && weapons[Person::players[i]->weaponids[0]].getType() == sword) { - Person::players[i]->setAnimation(drawleftanim); + Person::players[i]->setTargetAnimation(drawleftanim); Person::players[i]->drawtogglekeydown = 1; } if (Person::players[i]->isCrouch() && Person::players[i]->num_weapons && weapons[Person::players[i]->weaponids[0]].getType() == knife) { - Person::players[i]->setAnimation(crouchdrawrightanim); + Person::players[i]->setTargetAnimation(crouchdrawrightanim); Person::players[i]->drawtogglekeydown = 1; } } @@ -3785,9 +3764,9 @@ void Game::Tick() Person::players[i]->attackkeydown && musictype != stream_fighttheme) { if (weapons[Person::players[i]->weaponids[Person::players[i]->weaponactive]].getType() == knife) - Person::players[i]->setAnimation(crouchstabanim); + Person::players[i]->setTargetAnimation(crouchstabanim); if (weapons[Person::players[i]->weaponids[Person::players[i]->weaponactive]].getType() == sword) - Person::players[i]->setAnimation(swordgroundstabanim); + Person::players[i]->setTargetAnimation(swordgroundstabanim); Person::players[i]->hasvictim = 0; } } @@ -3860,7 +3839,7 @@ void Game::Tick() Person::players[i]->lowreversaldelay = .5; if (Person::players[i]->isIdle()) { - Person::players[i]->setAnimation(Person::players[i]->getCrouch()); + Person::players[i]->setTargetAnimation(Person::players[i]->getCrouch()); Person::players[i]->transspeed = 10; } if (Person::players[i]->isRun() || @@ -3869,7 +3848,7 @@ void Game::Tick() Person::players[i]->rightkeydown || Person::players[i]->forwardkeydown || Person::players[i]->backkeydown))) { - Person::players[i]->setAnimation(rollanim); + Person::players[i]->setTargetAnimation(rollanim); Person::players[i]->transspeed = 20; } } @@ -3905,12 +3884,12 @@ void Game::Tick() Person::players[i]->animCurrent = Person::players[i]->getCrouch(); Person::players[i]->frameCurrent = 0; } - Person::players[i]->setAnimation(Person::players[i]->getIdle()); + Person::players[i]->setTargetAnimation(Person::players[i]->getIdle()); Person::players[i]->transspeed = 10; } } if (Person::players[i]->animTarget == sneakanim) { - Person::players[i]->setAnimation(Person::players[i]->getIdle()); + Person::players[i]->setTargetAnimation(Person::players[i]->getIdle()); Person::players[i]->transspeed = 10; } } @@ -3926,9 +3905,9 @@ void Game::Tick() !Person::players[i]->jumpkeydown && Person::players[i]->crouchkeydown)) { if (Person::players[i]->aitype == passivetype) - Person::players[i]->setAnimation(walkanim); + Person::players[i]->setTargetAnimation(walkanim); else - Person::players[i]->setAnimation(Person::players[i]->getRun()); + Person::players[i]->setTargetAnimation(Person::players[i]->getRun()); } if (Person::players[i]->isCrouch()) { Person::players[i]->animTarget = sneakanim; @@ -3937,7 +3916,7 @@ void Game::Tick() Person::players[i]->frameTarget = 0; } if (Person::players[i]->animTarget == hanganim/*&&(!Person::players[i]->forwardstogglekeydown||Person::players[i]->aitype!=playercontrolled)*/) { - Person::players[i]->setAnimation(climbanim); + Person::players[i]->setTargetAnimation(climbanim); Person::players[i]->frameTarget = 1; Person::players[i]->jumpclimb = 1; } @@ -3958,7 +3937,7 @@ void Game::Tick() Person::players[i]->frameTarget > 0 && !Person::players[i]->jumpkeydown && Person::players[i]->crouchkeydown)) { - Person::players[i]->setAnimation(Person::players[i]->getRun()); + Person::players[i]->setTargetAnimation(Person::players[i]->getRun()); } if (Person::players[i]->isCrouch()) { Person::players[i]->animTarget = sneakanim; @@ -3987,7 +3966,7 @@ void Game::Tick() Person::players[i]->frameTarget > 0 && !Person::players[i]->jumpkeydown && Person::players[i]->crouchkeydown)) { - Person::players[i]->setAnimation(Person::players[i]->getRun()); + Person::players[i]->setTargetAnimation(Person::players[i]->getRun()); } if (Person::players[i]->isCrouch()) { Person::players[i]->animTarget = sneakanim; @@ -4016,7 +3995,7 @@ void Game::Tick() Person::players[i]->frameTarget > 0 && !Person::players[i]->jumpkeydown && Person::players[i]->crouchkeydown)) { - Person::players[i]->setAnimation(Person::players[i]->getRun()); + Person::players[i]->setTargetAnimation(Person::players[i]->getRun()); } if (Person::players[i]->isCrouch()) { Person::players[i]->animTarget = sneakanim; @@ -4052,7 +4031,7 @@ void Game::Tick() ((Person::players[i]->animTarget != rabbitrunninganim && Person::players[i]->animTarget != wolfrunninganim) || i != 0)) { Person::players[i]->jumpstart = 0; - Person::players[i]->setAnimation(jumpupanim); + Person::players[i]->setTargetAnimation(jumpupanim); Person::players[i]->yaw = Person::players[i]->targetyaw; Person::players[i]->transspeed = 20; Person::players[i]->FootLand(leftfoot, 1); @@ -4106,7 +4085,7 @@ void Game::Tick() emit_sound_at(jumpsound, Person::players[i]->coords, 128.); } if ((Person::players[i]->isIdle()) && Person::players[i]->jumppower > 1) { - Person::players[i]->setAnimation(Person::players[i]->getLanding()); + Person::players[i]->setTargetAnimation(Person::players[i]->getLanding()); Person::players[i]->frameTarget = 2; Person::players[i]->landhard = 0; Person::players[i]->jumpstart = 1; @@ -4131,12 +4110,14 @@ void Game::Tick() } if (!movekey) { - if (Person::players[i]->isRun() || Person::players[i]->animTarget == walkanim) - Person::players[i]->setAnimation(Person::players[i]->getStop()); + if (Person::players[i]->isRun() || Person::players[i]->animTarget == walkanim) { + Person::players[i]->setTargetAnimation(Person::players[i]->getStop()); + } if (Person::players[i]->animTarget == sneakanim) { Person::players[i]->animTarget = Person::players[i]->getCrouch(); - if (Person::players[i]->animCurrent == sneakanim) + if (Person::players[i]->animCurrent == sneakanim) { Person::players[i]->target = 0; + } Person::players[i]->frameTarget = 0; } } @@ -4145,9 +4126,9 @@ void Game::Tick() Person::players[i]->aitype == searchtype || (Person::players[i]->aitype == passivetype && Person::players[i]->numwaypoints <= 1))) - Person::players[i]->setAnimation(Person::players[i]->getStop()); + Person::players[i]->setTargetAnimation(Person::players[i]->getStop()); if (Person::players[i]->isRun() && (Person::players[i]->aitype == passivetype)) - Person::players[i]->setAnimation(Person::players[i]->getStop()); + Person::players[i]->setTargetAnimation(Person::players[i]->getStop()); } } if (Person::players[i]->animTarget == rollanim) @@ -4165,7 +4146,7 @@ void Game::Tick() //stop to turn in right direction if (fabs(Person::players[k]->yaw - Person::players[k]->targetyaw) > 90 && (Person::players[k]->isRun() || Person::players[k]->animTarget == walkanim)) - Person::players[k]->setAnimation(Person::players[k]->getStop()); + Person::players[k]->setTargetAnimation(Person::players[k]->getStop()); if (Person::players[k]->animTarget == backhandspringanim || Person::players[k]->animTarget == dodgebackanim) Person::players[k]->targettilt = 0; @@ -4308,7 +4289,7 @@ void Game::TickOnceAfter() Person::players[i]->aitype == getweapontype || Person::players[i]->aitype == gethelptype || Person::players[i]->aitype == searchtype) && - !Person::players[i]->dead/*&&Person::players[i]->surprised<=0*/ && + !Person::players[i]->dead && (Person::players[i]->animTarget != sneakattackedanim && Person::players[i]->animTarget != knifesneakattackedanim && Person::players[i]->animTarget != swordsneakattackedanim)) { @@ -4571,8 +4552,9 @@ void Game::TickOnceAfter() loading = 2; loadtime = 0; targetlevel = 7; - if (!firstload) + if (!firstLoadDone) { LoadStuff(); + } whichchoice = 0; actuallevel = campaignlevels[actuallevel].nextlevel.front(); visibleloading = true;