#include "openal_wrapper.h"
#include "Animation.h"
#include "Sounds.h"
+#include "Awards.h"
+#include "Game.h"
extern float multiplier;
-extern int channels[100];
extern Terrain terrain;
extern float gravity;
extern int environment;
extern bool autoslomo;
extern float camerashake;
extern float woozy;
-extern float terraindetail;
extern float viewdistance;
extern float blackout;
extern int difficulty;
-extern Weapons weapons;
extern bool decals;
extern float fadestart;
-extern Person player[maxplayers];
-extern int numplayers;
extern bool freeze;
extern bool winfreeze;
extern float flashamount,flashr,flashg,flashb;
extern bool midweird;
extern bool proportionweird;
extern bool vertexweird[6];
-extern GLubyte texturearray[512*512*3];
extern XYZ envsound[30];
extern float envsoundvol[30];
extern float envsoundlife[30];
extern int numenvsounds;
-extern int bonus;
-extern float bonusvalue;
-extern float bonustotal;
-extern float bonustime;
extern int tutoriallevel;
extern float smoketex;
extern int tutorialstage;
extern bool canattack;
extern bool cananger;
extern float damagedealt;
-extern float damagetaken;
extern int hostile;
extern float hostiletime;
-extern int numfalls;
-extern int numflipfail;
-extern int numseen;
-extern int numswordattack;
-extern int numknifeattack;
-extern int numunarmedattack;
-extern int numescaped;
-extern int numflipped;
-extern int numwallflipped;
-extern int numthrowkill;
-extern int numafterkill;
-extern int numreversals;
-extern int numattacks;
-extern int maxalarmed;
extern int indialogue;
extern bool gamestarted;
-extern OPENAL_STREAM * strm[20];
-extern "C" void PlaySoundEx(int channel, OPENAL_SAMPLE *sptr, OPENAL_DSPUNIT *dsp, signed char startpaused);
-extern "C" void PlayStreamEx(int chan, OPENAL_STREAM *sptr, OPENAL_DSPUNIT *dsp, signed char startpaused);
-
-void Person::CheckKick(){
- static XYZ relative;
- static int i;
-
- float damagemult=1*power;
- if(creature==wolftype)damagemult=2.5*power;
- damagemult*=power;
-
- if(hasvictim)
- if(targetanimation==rabbitkickanim&&victim&&victim!=this&¤tframe>=2&¤tanimation==rabbitkickanim){
- if(findDistancefast(&coords,&victim->coords)<1.2){
- if(!victim->skeleton.free){
- relative=velocity;
- Normalise(&relative);
- relative=coords+relative*1;
- if(animation[victim->targetanimation].height!=lowheight){
- victim->spurt=1;
- DoBlood(.2,250);
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- if(tutoriallevel!=1){
- PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
- OPENAL_SetVolume(channels[heavyimpactsound], 128);
- OPENAL_SetPaused(channels[heavyimpactsound], false);
- }
- victim->RagDoll(0);
- relative=velocity;
- relative.y=0;
- Normalise(&relative);
- for(i=0;i<victim->skeleton.num_joints;i++){
- victim->skeleton.joints[i].velocity+=relative*120*damagemult;
- }
- victim->Puff(neck);
- victim->DoDamage(100*damagemult/victim->protectionhigh);
- if(id==0)camerashake+=.4;
+Person player[maxplayers];
- target=0;
- currentframe=3;
- targetanimation=backflipanim;
- targetframe=4;
- velocity=facing*-10;
- velocity.y=5;
- skeleton.free=0;
- if(id==0)OPENAL_SetPaused(channels[whooshsound], false);
-
- //if(victim->damage>victim->damagetolerance){
- if(id==0){
- bonus=cannon;
- bonustime=0;
- bonusvalue=100;
- }
- //}
- }
- else if (victim->isCrouch()){
- targetanimation=rabbitkickreversedanim;
- currentanimation=rabbitkickreversedanim;
- victim->currentanimation=rabbitkickreversalanim;
- victim->targetanimation=rabbitkickreversalanim;
- targettilt2=0;
- currentframe=0;
- targetframe=1;
- target=0;
- velocity=0;
- victim->oldcoords=victim->coords;
- coords=victim->coords;
- victim->targetrotation=targetrotation;
- victim->victim=this;
- }
- }
- }
- }
+void Person::CheckKick()
+{
+ if (!(hasvictim
+ && (animTarget == rabbitkickanim
+ && victim
+ && victim != this
+ && frameCurrent >= 2
+ && animCurrent == rabbitkickanim)
+ && (distsq(&coords,&victim->coords) < 1.2)
+ && (!victim->skeleton.free)))
+ return;
+
+ if (animation[victim->animTarget].height!=lowheight)
+ {
+ float damagemult = (creature == wolftype ? 2.5 : 1.) * power * power;
+ XYZ relative = velocity;
+ relative.y=0;
+ Normalise(&relative);
+
+ victim->spurt=1;
+ DoBlood(.2,250);
+ if(tutoriallevel!=1)
+ emit_sound_at(heavyimpactsound, victim->coords);
+ victim->RagDoll(0);
+ for(int i=0;i<victim->skeleton.num_joints;i++){
+ victim->skeleton.joints[i].velocity+=relative*120*damagemult;
+ }
+ victim->Puff(neck);
+ victim->DoDamage(100*damagemult/victim->protectionhigh);
+ if(id==0)camerashake+=.4;
+
+ target=0;
+ frameCurrent=3;
+ animTarget=backflipanim;
+ frameTarget=4;
+ velocity=facing*-10;
+ velocity.y=5;
+ skeleton.free=0;
+ if(id==0)
+ resume_stream(whooshsound);
+
+ award_bonus(id, cannon);
+ }
+ else if (victim->isCrouch())
+ {
+ animTarget=rabbitkickreversedanim;
+ animCurrent=rabbitkickreversedanim;
+ victim->animCurrent=rabbitkickreversalanim;
+ victim->animTarget=rabbitkickreversalanim;
+ targettilt2=0;
+ frameCurrent=0;
+ frameTarget=1;
+ target=0;
+ velocity=0;
+ victim->oldcoords=victim->coords;
+ coords=victim->coords;
+ victim->targetyaw=targetyaw;
+ victim->victim=this;
+ }
}
void Person::CatchFire(){
howmany=abs(Random()%(skeleton.num_joints));
if(!skeleton.free)flatvelocity=velocity;
if(skeleton.free)flatvelocity=skeleton.joints[howmany].velocity;
- if(!skeleton.free)flatfacing=DoRotation(DoRotation(DoRotation(skeleton.joints[howmany].position,0,0,tilt),tilt2,0,0),0,rotation,0)*scale+coords;
+ if(!skeleton.free)flatfacing=DoRotation(DoRotation(DoRotation(skeleton.joints[howmany].position,0,0,tilt),tilt2,0,0),0,yaw,0)*scale+coords;
if(skeleton.free)flatfacing=skeleton.joints[howmany].position*scale+coords;
Sprite::MakeSprite(flamesprite, flatfacing,flatvelocity, 1,1,1, 2, 1);
}
onfiredelay=0.5;
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=0;
- vel[1]=0;
- vel[2]=0;
- PlaySoundEx( firestartsound, samp[firestartsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[firestartsound], gLoc, vel);
- OPENAL_SetVolume(channels[firestartsound], 256);
- OPENAL_SetPaused(channels[firestartsound], false);
-
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- //PlaySoundEx( firesound, samp[firesound], NULL, true);
- PlayStreamEx( stream_firesound, strm[stream_firesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[stream_firesound], gLoc, vel);
- OPENAL_SetVolume(channels[stream_firesound], 256);
- OPENAL_SetPaused(channels[stream_firesound], false);
+ emit_sound_at(firestartsound, coords);
+
+ emit_stream_at(stream_firesound, coords);
flamedelay=0;
onfire=1;
}
-bool Person::isIdle(){
- if(targetanimation==sleepanim||targetanimation==sitanim||targetanimation==talkidleanim||targetanimation==hurtidleanim||targetanimation==bounceidleanim||targetanimation==talkidleanim||targetanimation==fightidleanim||targetanimation==knifefightidleanim||targetanimation==swordfightidleanim||targetanimation==swordfightidlebothanim||targetanimation==fightsidestep||targetanimation==wolfidle)return 1;
- else return 0;
-}
-
-bool Person::isSitting(){
- if(targetanimation==sitanim)return 1;
- if(targetanimation==sitwallanim)return 1;
- else return 0;
-}
-
-bool Person::isSleeping(){
- if(targetanimation==sleepanim)return 1;
- if(targetanimation==dead1anim)return 1;
- if(targetanimation==dead2anim)return 1;
- if(targetanimation==dead3anim)return 1;
- if(targetanimation==dead4anim)return 1;
- else return 0;
-}
-
-bool Person::wasIdle(){
- if(currentanimation==sleepanim||currentanimation==talkidleanim||currentanimation==sitanim||currentanimation==hurtidleanim||currentanimation==bounceidleanim||currentanimation==fightidleanim||currentanimation==swordfightidleanim||currentanimation==swordfightidlebothanim||currentanimation==knifefightidleanim||currentanimation==fightsidestep||currentanimation==wolfidle)return 1;
- else return 0;
-}
int Person::getIdle(){
if(indialogue!=-1&&howactive==typeactive&&creature==rabbittype)return talkidleanim;
if(hasvictim&&victim!=this/*||(id==0&&attackkeydown)*/)if(/*(id==0&&attackkeydown)||*/(!victim->dead&&victim->aitype!=passivetype&&victim->aitype!=searchtype&&aitype!=passivetype&&aitype!=searchtype&&victim->id<numplayers)){
if(creature==wolftype)return wolfidle;
}
if(aitype==playercontrolled&&stunned<=0&&weaponactive!=-1){
- if(weapons.type[weaponids[weaponactive]]==knife)return knifefightidleanim;
- if(weapons.type[weaponids[weaponactive]]==sword&&victim->weaponactive!=-1)return swordfightidlebothanim;
- if(weapons.type[weaponids[weaponactive]]==sword)return swordfightidleanim;
- if(weapons.type[weaponids[weaponactive]]==staff)return swordfightidleanim;
+ if(weapons[weaponids[weaponactive]].getType()==knife)
+ return knifefightidleanim;
+ if(weapons[weaponids[weaponactive]].getType()==sword&&victim->weaponactive!=-1)
+ return swordfightidlebothanim;
+ if(weapons[weaponids[weaponactive]].getType()==sword)
+ return swordfightidleanim;
+ if(weapons[weaponids[weaponactive]].getType()==staff)
+ return swordfightidleanim;
}
if(aitype!=playercontrolled&&stunned<=0&&creature!=wolftype&&!pause)return fightsidestep;
}
return 0;
}
-bool Person::isCrouch(){
- if(targetanimation==crouchanim||targetanimation==wolfcrouchanim)return 1;
- else return 0;
-}
-
-
-bool Person::wasCrouch(){
- if(currentanimation==crouchanim||currentanimation==wolfcrouchanim)return 1;
- else return 0;
-}
int Person::getCrouch(){
if(creature==rabbittype)return crouchanim;
if(creature==wolftype)return wolfcrouchanim;
return 0;
}
-bool Person::isRun(){
- if(targetanimation==runanim||targetanimation==wolfrunanim||targetanimation==wolfrunninganim||targetanimation==rabbitrunninganim)return 1;
- else return 0;
-}
-
-
-bool Person::wasRun(){
- if(currentanimation==runanim||currentanimation==wolfrunanim||currentanimation==wolfrunninganim||currentanimation==rabbitrunninganim)return 1;
- else return 0;
-}
int Person::getRun(){
if(creature==rabbittype&&(!superruntoggle||weaponactive!=-1))return runanim;
if(creature==wolftype&&(!superruntoggle))return wolfrunanim;
return 0;
}
-bool Person::isStop(){
- if(targetanimation==stopanim||targetanimation==wolfstopanim)return 1;
- else return 0;
-}
-
-
-bool Person::wasStop(){
- if(currentanimation==stopanim||currentanimation==wolfstopanim)return 1;
- else return 0;
-}
int Person::getStop(){
if(creature==rabbittype)return stopanim;
if(creature==wolftype)return wolfstopanim;
return 0;
}
-
-bool Person::isLanding(){
- if(targetanimation==landanim||targetanimation==wolflandanim)return 1;
- else return 0;
-}
-
-
-bool Person::wasLanding(){
- if(currentanimation==landanim||currentanimation==wolflandanim)return 1;
- else return 0;
-}
int Person::getLanding(){
if(creature==rabbittype)return landanim;
if(creature==wolftype)return wolflandanim;
return 0;
}
-
-bool Person::isLandhard(){
- if(targetanimation==landhardanim||targetanimation==wolflandhardanim)return 1;
- else return 0;
-}
-
-
-bool Person::wasLandhard(){
- if(currentanimation==landhardanim||currentanimation==wolflandhardanim)return 1;
- else return 0;
-}
int Person::getLandhard(){
if(creature==rabbittype)return landhardanim;
if(creature==wolftype)return wolflandhardanim;
return 0;
}
-
-bool Person::isFlip(){
- if(targetanimation==flipanim||targetanimation==frontflipanim||targetanimation==backflipanim||targetanimation==rightflipanim||targetanimation==leftflipanim||targetanimation==walljumprightkickanim||targetanimation==walljumpleftkickanim)return 1;
- else return 0;
-}
-
-bool Person::wasFlip(){
- if(currentanimation==flipanim||currentanimation==frontflipanim||currentanimation==backflipanim||currentanimation==rightflipanim||currentanimation==leftflipanim||currentanimation==walljumprightkickanim||currentanimation==walljumpleftkickanim)return 1;
- else return 0;
-}
-
-bool Person::isWallJump(){
- if(targetanimation==walljumpfrontanim||targetanimation==walljumpbackanim||targetanimation==walljumpleftanim||targetanimation==walljumprightanim)return 1;
- else return 0;
-}
-
-void SolidHitBonus();
-void SolidHitBonus(){
- if(bonustime<1.5&&(bonus==fourxcombo||bonus==megacombo)){
- bonus=megacombo;
- bonustime=0;
- bonusvalue=160;
- }
- else if(bonustime<1.5&&bonus==threexcombo){
- bonus=fourxcombo;
- bonustime=0;
- bonusvalue=80;
- }
- else if(bonustime<1.5&&bonus==twoxcombo){
- bonus=threexcombo;
- bonustime=0;
- bonusvalue=40;
- }
- else if(bonustime<1.5&&bonus==solidhit){
- bonus=twoxcombo;
- bonustime=0;
- bonusvalue=20;
- }
- else {
- bonus=solidhit;
- bonustime=0;
- bonusvalue=10;
- }
+static void
+SolidHitBonus(int playerid)
+{
+ if (bonustime < 1.5 && bonus >= solidhit && bonus <= megacombo)
+ award_bonus(playerid, bonus == megacombo ? bonus : bonus + 1);
+ else
+ award_bonus(playerid, solidhit);
}
void Person::DoBlood(float howmuch,int which){
bloodvel=0;
if(!skeleton.free){
bloodvel.z=10;
- bloodvel=DoRotation(bloodvel,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale;
+ bloodvel=DoRotation(bloodvel,((float)(Random()%100))/4,yaw+((float)(Random()%100))/4,0)*scale;
}
if(skeleton.free){
bloodvel-=DoRotation(skeleton.forward*10*scale,((float)(Random()%100))/4,((float)(Random()%100))/4,0);
}
- if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale;
+ if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/4,yaw+((float)(Random()%100))/4,0)*scale;
if(!skeleton.free)bloodvel+=DoRotation(velocity,((float)(Random()%100))/4,((float)(Random()%100))/4,0)*scale;
if(skeleton.free){
Sprite::MakeSprite(bloodsprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .05, 1);
Sprite::MakeSprite(bloodflamesprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .3, 1);
}
if(!skeleton.free){
- Sprite::MakeSprite(bloodsprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1);
- Sprite::MakeSprite(bloodflamesprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .3, 1);
+ Sprite::MakeSprite(bloodsprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,yaw,0)*scale+coords,bloodvel, 1,1,1, .05, 1);
+ Sprite::MakeSprite(bloodflamesprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,yaw,0)*scale+coords,bloodvel, 1,1,1, .3, 1);
}
}
if(Random()%2==0)
bloodvel=0;
if(skeleton.free) {
bloodvel-=DoRotation(skeleton.forward*10*scale,((float)(Random()%100))/4,((float)(Random()%100))/4,0);
- bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale;
+ bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/4,yaw+((float)(Random()%100))/4,0)*scale;
} else {
bloodvel.z=10;
- bloodvel=DoRotation(bloodvel,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale;
+ bloodvel=DoRotation(bloodvel,((float)(Random()%100))/4,yaw+((float)(Random()%100))/4,0)*scale;
bloodvel+=DoRotation(velocity,((float)(Random()%100))/4,((float)(Random()%100))/4,0)*scale;
}
bloodvel*=.2;
if(skeleton.free){
Sprite::MakeSprite(splintersprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .05, 1);
} else {
- Sprite::MakeSprite(splintersprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1);
+ Sprite::MakeSprite(splintersprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,yaw,0)*scale+coords,bloodvel, 1,1,1, .05, 1);
}
Sprite::setLastSpriteSpecial(3);
}
bleeding=howmuch+(float)abs(Random()%100)/200-.25;
bleedxint=0;
bleedyint=0;
- int texdetailint=realtexdetail;
if(creature==rabbittype)
while(bloodText[bleedxint*512*3+bleedyint*3+0]>which+4||bloodText[bleedxint*512*3+bleedyint*3+0]<which-4||bleedxint<10||bleedyint<10||bleedxint>500||bleedyint>500){
bleedxint=abs(Random()%512);
if(tutoriallevel!=1||id==0)
if(aitype!=playercontrolled&&howmuch>0){
int whichsound=-1;
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
if(creature==wolftype){
int i=abs(Random()%2);
//if(i==2)whichsound=rabbitpain2sound;
}
- if(whichsound!=-1){
- PlaySoundEx( whichsound, samp[whichsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel);
- OPENAL_SetVolume(channels[whichsound], 512);
- OPENAL_SetPaused(channels[whichsound], false);
- }
+ if(whichsound!=-1)
+ emit_sound_at(whichsound, coords);
}
if(id==0&&howmuch>0){
bloodvel=0;
if(!skeleton.free){
bloodvel.z=10;
- bloodvel=DoRotation(bloodvel,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale;
+ bloodvel=DoRotation(bloodvel,((float)(Random()%100))/4,yaw+((float)(Random()%100))/4,0)*scale;
}
if(skeleton.free){
bloodvel-=DoRotation(skeleton.forward*10*scale,((float)(Random()%100))/4,((float)(Random()%100))/4,0);
}
- if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale;
+ if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/4,yaw+((float)(Random()%100))/4,0)*scale;
if(!skeleton.free)bloodvel+=DoRotation(velocity,((float)(Random()%100))/4,((float)(Random()%100))/4,0)*scale;
if(skeleton.free){
Sprite::MakeSprite(bloodsprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .05, 1);
Sprite::MakeSprite(bloodflamesprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .3, 1);
}
if(!skeleton.free){
- Sprite::MakeSprite(bloodsprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1);
- Sprite::MakeSprite(bloodflamesprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .3, 1);
+ Sprite::MakeSprite(bloodsprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,yaw,0)*scale+coords,bloodvel, 1,1,1, .05, 1);
+ Sprite::MakeSprite(bloodflamesprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,yaw,0)*scale+coords,bloodvel, 1,1,1, .3, 1);
}
}
}
offsetx=Random()%20;
}
if(which==220||which==215){
- //offsety=Random()%20;
offsetx=20;
- //offsetx=abs(Random()%80);
}
}
}
}
- glBindTexture(GL_TEXTURE_2D,skeleton.drawmodel.textureptr);
- if(detail!=2||osx)DoMipmaps(5,0,0,skeleton.skinsize,skeleton.skinsize);
- else DoMipmaps(0,startx/realtexdetail,endx/realtexdetail,starty/realtexdetail,endy/realtexdetail);
+ skeleton.drawmodel.textureptr.bind();
+ DoMipmaps();
bleedxint=0;
bleedyint=0;
}
bool Person::DoBloodBigWhere(float howmuch,int which, XYZ where){
- static int bleedxint,bleedyint,i,j;
+ static int i,j;
static XYZ bloodvel;
static XYZ startpoint,endpoint,colpoint,movepoint;
static float rotationpoint;
if(bloodtoggle&&decals&&tutoriallevel!=1){
where-=coords;
- if(!skeleton.free)where=DoRotation(where,0,-rotation,0);
+ if(!skeleton.free)where=DoRotation(where,0,-yaw,0);
//where=scale;
startpoint=where;
startpoint.y+=100;
t = dotproduct(&temp,&N)/findLength(&N);
r = 1 - (s + t);*/
- bary.x=findDistancefast(&p0,&p1);
- bary.y=findDistancefast(&p0,&p2);
- bary.z=findDistancefast(&p0,&p3);
+ bary.x=distsq(&p0,&p1);
+ bary.y=distsq(&p0,&p2);
+ bary.z=distsq(&p0,&p3);
total=bary.x+bary.y+bary.z;
bary.x/=total;
bloodvel=0;
if(!skeleton.free){
bloodvel.z=10;
- bloodvel=DoRotation(bloodvel,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale;
+ bloodvel=DoRotation(bloodvel,((float)(Random()%100))/4,yaw+((float)(Random()%100))/4,0)*scale;
}
if(skeleton.free){
bloodvel-=DoRotation(skeleton.forward*10*scale,((float)(Random()%100))/4,((float)(Random()%100))/4,0);
}
- if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale;
+ if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/4,yaw+((float)(Random()%100))/4,0)*scale;
if(!skeleton.free)bloodvel+=DoRotation(velocity,((float)(Random()%100))/4,((float)(Random()%100))/4,0)*scale;
if(skeleton.free){
Sprite::MakeSprite(bloodsprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .05, 1);
Sprite::MakeSprite(bloodflamesprite, skeleton.joints[skeleton.jointlabels[head]].position*scale+coords,bloodvel, 1,1,1, .3, 1);
}
if(!skeleton.free){
- Sprite::MakeSprite(bloodsprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1);
- Sprite::MakeSprite(bloodflamesprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .3, 1);
+ Sprite::MakeSprite(bloodsprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,yaw,0)*scale+coords,bloodvel, 1,1,1, .05, 1);
+ Sprite::MakeSprite(bloodflamesprite, DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,yaw,0)*scale+coords,bloodvel, 1,1,1, .3, 1);
}
}
}
}
}
}
- glBindTexture(GL_TEXTURE_2D,skeleton.drawmodel.textureptr);
- if(detail!=2||osx)DoMipmaps(5,0,0,skeleton.skinsize,skeleton.skinsize);
- else DoMipmaps(0,startx/realtexdetail,endx/realtexdetail,starty/realtexdetail,endy/realtexdetail);
+ skeleton.drawmodel.textureptr.bind();
+ DoMipmaps();
bleedy=(1+coordsy)*512;
bleedx=coordsx*512;
}
-void Person::DoMipmaps(int howmanylevels,float startx, float endx, float starty, float endy){
- int i,j,k;
- static float temp;
- static int bytesPerPixel=3;
- static int newsize,totalsize,rowsize,bigstep,smallstep,sum;
- static int newstartx,newstarty,newendx,newendy;
- static int newnewstartx,newnewstarty,newnewendx,newnewendy;
- static int which;
- static float sizemult;
- /*
- for(i=0;i<skeleton.skinsize*skeleton.skinsize*bytesPerPixel;i++){
- texture[i]=skeleton.skinText[i];
- }
- */
- if((!osx||howmanylevels)){
-
- if(startx<0)startx=0;
- if(starty<0)starty=0;
- if(endx>skeleton.skinsize-1)endx=skeleton.skinsize-1;
- if(endy>skeleton.skinsize-1)endy=skeleton.skinsize-1;
- if((endx>startx&&endy>starty)||howmanylevels){
-
- newstartx=startx;
- newstarty=starty;
- newendx=endx;
- newendy=endy;
-
- for(i=startx;i<endx;i++){
- for(j=starty;j<endy;j++){
- texturearray[(i-newstartx)*(newendy-newstarty)*3+(j-newstarty)*3+0]=skeleton.skinText[i*skeleton.skinsize*3+j*3+0];
- texturearray[(i-newstartx)*(newendy-newstarty)*3+(j-newstarty)*3+1]=skeleton.skinText[i*skeleton.skinsize*3+j*3+1];
- texturearray[(i-newstartx)*(newendy-newstarty)*3+(j-newstarty)*3+2]=skeleton.skinText[i*skeleton.skinsize*3+j*3+2];
- }
- }
-
- glBindTexture(GL_TEXTURE_2D,skeleton.drawmodel.textureptr);
-
- if(!howmanylevels){
- if(!osx)glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP_SGIS,GL_TRUE);
- glTexSubImage2D(GL_TEXTURE_2D,0,starty,startx,endy-starty,endx-startx,GL_RGB,GL_UNSIGNED_BYTE,texturearray);
- if(!osx)glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP_SGIS,GL_FALSE);
- }
-
- newsize=skeleton.skinsize;
- if(howmanylevels)
- gluBuild2DMipmaps( GL_TEXTURE_2D, GL_RGB, skeleton.skinsize, skeleton.skinsize, GL_RGB, GL_UNSIGNED_BYTE, &skeleton.skinText[0] );
+void Person::Reverse()
+{
+ if (!((victim->aitype == playercontrolled
+ || hostiletime > 1
+ || staggerdelay <= 0)
+ && victim->animTarget != jumpupanim
+ && victim->animTarget != jumpdownanim
+ && (tutoriallevel != 1 || cananger)
+ && hostile))
+ return;
+
+ if (normaldotproduct (victim->facing, victim->coords-coords) > 0
+ && (victim->id != 0 || difficulty >= 2)
+ && (creature != wolftype || victim->creature == wolftype))
+ return;
+
+ if(animTarget==sweepanim){
+ animTarget=sweepreversedanim;
+ animCurrent=sweepreversedanim;
+ victim->animCurrent=sweepreversalanim;
+ victim->animTarget=sweepreversalanim;
+ }
+ if(animTarget==spinkickanim){
+ animTarget=spinkickreversedanim;
+ animCurrent=spinkickreversedanim;
+ victim->animCurrent=spinkickreversalanim;
+ victim->animTarget=spinkickreversalanim;
+ }
+ if(animTarget==upunchanim||animTarget==rabbittacklinganim){
+ if(animTarget==rabbittacklinganim){
+ frameCurrent=6;
+ frameTarget=7;
+ victim->frameCurrent=6;
+ victim->frameTarget=7;
+ }
+ animTarget=upunchreversedanim;
+ animCurrent=upunchreversedanim;
+ victim->animCurrent=upunchreversalanim;
+ victim->animTarget=upunchreversalanim;
+ }
+ if(animTarget==staffhitanim&&distsq(&victim->coords,&coords)<2&&((victim->id==0&&victim->crouchkeydown)||Random()%4==0)){
+ if(victim->weaponactive!=-1){
+ victim->throwtogglekeydown=1;
+ weapons[victim->weaponids[0]].owner=-1;
+ weapons[victim->weaponids[0]].velocity=victim->velocity*.2;
+ if(weapons[victim->weaponids[0]].velocity.x==0)weapons[victim->weaponids[0]].velocity.x=.1;
+ weapons[victim->weaponids[0]].tipvelocity=weapons[victim->weaponids[0]].velocity;
+ weapons[victim->weaponids[0]].missed=1;
+ weapons[victim->weaponids[0]].freetime=0;
+ weapons[victim->weaponids[0]].firstfree=1;
+ weapons[victim->weaponids[0]].physics=1;
+ victim->num_weapons--;
+ if(victim->num_weapons){
+ victim->weaponids[0]=victim->weaponids[victim->num_weapons];
+ if(victim->weaponstuck==victim->num_weapons)victim->weaponstuck=0;
+ }
+
+ victim->weaponactive=-1;
+ for(int j=0;j<numplayers;j++){
+ player[j].wentforweapon=0;
+ }
+ }
+
+ animTarget=staffhitreversedanim;
+ animCurrent=staffhitreversedanim;
+ victim->animCurrent=staffhitreversalanim;
+ victim->animTarget=staffhitreversalanim;
+ }
+ if(animTarget==staffspinhitanim&&distsq(&victim->coords,&coords)<2&&((victim->id==0&&victim->crouchkeydown)||Random()%2==0)){
+ if(victim->weaponactive!=-1){
+ victim->throwtogglekeydown=1;
+ weapons[victim->weaponids[0]].owner=-1;
+ weapons[victim->weaponids[0]].velocity=victim->velocity*.2;
+ if(weapons[victim->weaponids[0]].velocity.x==0)weapons[victim->weaponids[0]].velocity.x=.1;
+ weapons[victim->weaponids[0]].tipvelocity=weapons[victim->weaponids[0]].velocity;
+ weapons[victim->weaponids[0]].missed=1;
+ weapons[victim->weaponids[0]].freetime=0;
+ weapons[victim->weaponids[0]].firstfree=1;
+ weapons[victim->weaponids[0]].physics=1;
+ victim->num_weapons--;
+ if(victim->num_weapons){
+ victim->weaponids[0]=victim->weaponids[victim->num_weapons];
+ if(victim->weaponstuck==victim->num_weapons)victim->weaponstuck=0;
+ }
+
+ victim->weaponactive=-1;
+ for(int j=0;j<numplayers;j++){
+ player[j].wentforweapon=0;
+ }
+ }
+ animTarget=staffspinhitreversedanim;
+ animCurrent=staffspinhitreversedanim;
+ victim->animCurrent=staffspinhitreversalanim;
+ victim->animTarget=staffspinhitreversalanim;
+ }
+ if(animTarget==swordslashanim&&distsq(&victim->coords,&coords)<2&&((victim->id==0&&victim->crouchkeydown)||Random()%4==0)){
+ if(victim->weaponactive!=-1){
+ victim->throwtogglekeydown=1;
+ weapons[victim->weaponids[0]].owner=-1;
+ weapons[victim->weaponids[0]].velocity=victim->velocity*.2;
+ if(weapons[victim->weaponids[0]].velocity.x==0)weapons[victim->weaponids[0]].velocity.x=.1;
+ weapons[victim->weaponids[0]].tipvelocity=weapons[victim->weaponids[0]].velocity;
+ weapons[victim->weaponids[0]].missed=1;
+ weapons[victim->weaponids[0]].freetime=0;
+ weapons[victim->weaponids[0]].firstfree=1;
+ weapons[victim->weaponids[0]].physics=1;
+ victim->num_weapons--;
+ if(victim->num_weapons){
+ victim->weaponids[0]=victim->weaponids[victim->num_weapons];
+ if(victim->weaponstuck==victim->num_weapons)victim->weaponstuck=0;
+ }
+
+ victim->weaponactive=-1;
+ for(int j=0;j<numplayers;j++){
+ player[j].wentforweapon=0;
+ }
+ }
+ animTarget=swordslashreversedanim;
+ animCurrent=swordslashreversedanim;
+ victim->animCurrent=swordslashreversalanim;
+ victim->animTarget=swordslashreversalanim;
+ }
+ if(animTarget==knifeslashstartanim&&distsq(&victim->coords,&coords)<2&&(victim->id==0||Random()%4==0)){
+ if(victim->weaponactive!=-1){
+ victim->throwtogglekeydown=1;
+ weapons[victim->weaponids[0]].owner=-1;
+ weapons[victim->weaponids[0]].velocity=victim->velocity*.2;
+ if(weapons[victim->weaponids[0]].velocity.x==0)weapons[victim->weaponids[0]].velocity.x=.1;
+ weapons[victim->weaponids[0]].tipvelocity=weapons[victim->weaponids[0]].velocity;
+ weapons[victim->weaponids[0]].missed=1;
+ weapons[victim->weaponids[0]].freetime=0;
+ weapons[victim->weaponids[0]].firstfree=1;
+ weapons[victim->weaponids[0]].physics=1;
+ victim->num_weapons--;
+ if(victim->num_weapons){
+ victim->weaponids[0]=victim->weaponids[victim->num_weapons];
+ if(victim->weaponstuck==victim->num_weapons)victim->weaponstuck=0;
+ }
+
+ victim->weaponactive=-1;
+ for(int j=0;j<numplayers;j++){
+ player[j].wentforweapon=0;
+ }
+ }
+ animTarget=knifeslashreversedanim;
+ animCurrent=knifeslashreversedanim;
+ victim->animCurrent=knifeslashreversalanim;
+ victim->animTarget=knifeslashreversalanim;
+ }
+ if(animTarget!=knifeslashstartanim&&animTarget!=staffhitanim&&animTarget!=staffspinhitanim&&animTarget!=winduppunchanim&&animTarget!=wolfslapanim&&animTarget!=swordslashanim&&animTarget!=swordslashanim){
+ victim->targettilt2=targettilt2;
+ victim->frameCurrent=frameCurrent;
+ victim->frameTarget=frameTarget;
+ victim->target=target;
+ victim->velocity=0;
+ victim->oldcoords=victim->coords;
+ victim->coords=coords;
+ victim->targetyaw=targetyaw;
+ victim->yaw=targetyaw;
+ victim->victim=this;
+ }
+ if(animTarget==winduppunchanim){
+ animTarget=winduppunchblockedanim;
+ victim->animTarget=blockhighleftanim;
+ victim->frameTarget=1;
+ victim->target=.5;
+ victim->victim=this;
+ victim->targetyaw=targetyaw+180;
+ }
+ if(animTarget==wolfslapanim){
+ animTarget=winduppunchblockedanim;
+ victim->animTarget=blockhighleftanim;
+ victim->frameTarget=1;
+ victim->target=.5;
+ victim->victim=this;
+ victim->targetyaw=targetyaw+180;
+ }
+ if((animTarget==swordslashanim||animTarget==staffhitanim||animTarget==staffspinhitanim)&&victim->weaponactive!=-1){
+ animTarget=swordslashparriedanim;
+ parriedrecently=.4;
+ victim->parriedrecently=0;
+ victim->animTarget=swordslashparryanim;
+ victim->frameTarget=1;
+ victim->target=.5;
+ victim->victim=this;
+ victim->targetyaw=targetyaw+180;
+
+ if(abs(Random()%20)==0||weapons[victim->weaponids[victim->weaponactive]].getType()==knife){
+ if(victim->weaponactive!=-1){
+ if(weapons[victim->weaponids[0]].getType()==staff||weapons[weaponids[0]].getType()==staff) {
+ if(weapons[victim->weaponids[0]].getType()==staff)
+ weapons[victim->weaponids[0]].damage+=.2+float(abs(Random()%100)-50)/250;
+ if(weapons[weaponids[0]].getType()==staff)
+ weapons[weaponids[0]].damage+=.2+float(abs(Random()%100)-50)/250;
+ emit_sound_at(swordstaffsound, victim->coords);
}
- /*for(j=1;j<=howmanylevels;j++){
- if(j==1)texpointer=&skeleton.skinText[0];
- else texpointer=&texture[0];
-
- totalsize=int( newsize*newsize*bytesPerPixel);
- rowsize=int( newsize*bytesPerPixel );
- bigstep=bytesPerPixel*newsize*2;
- smallstep=bytesPerPixel*2;
-
- which=0;
-
-
-
- glTexSubImage2D(GL_TEXTURE_2D,j,0,0,newsize/2,newsize/2,GL_RGB,GL_UNSIGNED_BYTE,texture);
- newsize/=2;
- }*/
+ else{
+ emit_sound_at(metalhitsound, victim->coords);
+ }
+ }
+ XYZ aim;
+ victim->Puff(righthand);
+ victim->target=0;
+ victim->frameTarget=0;
+ victim->animTarget=staggerbackhighanim;
+ victim->targetyaw=targetyaw+180;
+ victim->target=0;
+ weapons[victim->weaponids[0]].owner=-1;
+ aim=DoRotation(facing,0,90,0)*21;
+ aim.y+=7;
+ weapons[victim->weaponids[0]].velocity=aim*-.2;
+ weapons[victim->weaponids[0]].tipvelocity=aim;
+ weapons[victim->weaponids[0]].missed=1;
+ weapons[victim->weaponids[0]].hitsomething=0;
+ weapons[victim->weaponids[0]].freetime=0;
+ weapons[victim->weaponids[0]].firstfree=1;
+ weapons[victim->weaponids[0]].physics=1;
+ victim->num_weapons--;
+ if(victim->num_weapons){
+ victim->weaponids[0]=victim->weaponids[num_weapons];
+ if(victim->weaponstuck==victim->num_weapons)victim->weaponstuck=0;
+ }
+ victim->weaponactive=-1;
+ for(int i=0;i<numplayers;i++){
+ player[i].wentforweapon=0;
+ }
+ }
+
+ if(abs(Random()%20)==0){
+ if(weaponactive!=-1){
+ if(weapons[victim->weaponids[0]].getType()==staff||weapons[weaponids[0]].getType()==staff){
+ if(weapons[victim->weaponids[0]].getType()==staff)weapons[victim->weaponids[0]].damage+=.2+float(abs(Random()%100)-50)/250;
+ if(weapons[weaponids[0]].getType()==staff)weapons[weaponids[0]].damage+=.2+float(abs(Random()%100)-50)/250;
+
+ emit_sound_at(swordstaffsound, coords);
}
-}
-
-
-void Person::Reverse(){
- if(victim->aitype==playercontrolled||hostiletime>1)
- if(victim->targetanimation!=jumpupanim&&victim->targetanimation!=jumpdownanim&&((tutoriallevel!=1||cananger)&&hostile)){
- if(normaldotproduct(victim->facing,victim->coords-coords)>0&&!(victim->id==0&&difficulty<2)&&(creature!=wolftype||victim->creature==wolftype))return;
- if(victim->aitype!=playercontrolled&&staggerdelay>0)return;
- if(targetanimation==sweepanim){
- targetanimation=sweepreversedanim;
- currentanimation=sweepreversedanim;
- victim->currentanimation=sweepreversalanim;
- victim->targetanimation=sweepreversalanim;
- }
- if(targetanimation==spinkickanim){
- targetanimation=spinkickreversedanim;
- currentanimation=spinkickreversedanim;
- victim->currentanimation=spinkickreversalanim;
- victim->targetanimation=spinkickreversalanim;
- }
- if(targetanimation==upunchanim||targetanimation==rabbittacklinganim){
- if(targetanimation==rabbittacklinganim){
- currentframe=6;
- targetframe=7;
- victim->currentframe=6;
- victim->targetframe=7;
- }
- targetanimation=upunchreversedanim;
- currentanimation=upunchreversedanim;
- victim->currentanimation=upunchreversalanim;
- victim->targetanimation=upunchreversalanim;
- }
- if(targetanimation==staffhitanim&&findDistancefast(&victim->coords,&coords)<2&&((victim->id==0&&victim->crouchkeydown)||Random()%4==0)){
- if(victim->weaponactive!=-1){
- victim->throwtogglekeydown=1;
- weapons.owner[victim->weaponids[0]]=-1;
- weapons.velocity[victim->weaponids[0]]=victim->velocity*.2;
- if(weapons.velocity[victim->weaponids[0]].x==0)weapons.velocity[victim->weaponids[0]].x=.1;
- weapons.tipvelocity[victim->weaponids[0]]=weapons.velocity[victim->weaponids[0]];
- weapons.missed[victim->weaponids[0]]=1;
- weapons.freetime[victim->weaponids[0]]=0;
- weapons.firstfree[victim->weaponids[0]]=1;
- weapons.physics[victim->weaponids[0]]=1;
- victim->num_weapons--;
- if(victim->num_weapons){
- victim->weaponids[0]=victim->weaponids[victim->num_weapons];
- if(victim->weaponstuck==victim->num_weapons)victim->weaponstuck=0;
- }
-
- victim->weaponactive=-1;
- for(int j=0;j<numplayers;j++){
- player[j].wentforweapon=0;
- }
- }
-
- targetanimation=staffhitreversedanim;
- currentanimation=staffhitreversedanim;
- victim->currentanimation=staffhitreversalanim;
- victim->targetanimation=staffhitreversalanim;
- }
- if(targetanimation==staffspinhitanim&&findDistancefast(&victim->coords,&coords)<2&&((victim->id==0&&victim->crouchkeydown)||Random()%2==0)){
- if(victim->weaponactive!=-1){
- victim->throwtogglekeydown=1;
- weapons.owner[victim->weaponids[0]]=-1;
- weapons.velocity[victim->weaponids[0]]=victim->velocity*.2;
- if(weapons.velocity[victim->weaponids[0]].x==0)weapons.velocity[victim->weaponids[0]].x=.1;
- weapons.tipvelocity[victim->weaponids[0]]=weapons.velocity[victim->weaponids[0]];
- weapons.missed[victim->weaponids[0]]=1;
- weapons.freetime[victim->weaponids[0]]=0;
- weapons.firstfree[victim->weaponids[0]]=1;
- weapons.physics[victim->weaponids[0]]=1;
- victim->num_weapons--;
- if(victim->num_weapons){
- victim->weaponids[0]=victim->weaponids[victim->num_weapons];
- if(victim->weaponstuck==victim->num_weapons)victim->weaponstuck=0;
- }
-
- victim->weaponactive=-1;
- for(int j=0;j<numplayers;j++){
- player[j].wentforweapon=0;
- }
- }
- targetanimation=staffspinhitreversedanim;
- currentanimation=staffspinhitreversedanim;
- victim->currentanimation=staffspinhitreversalanim;
- victim->targetanimation=staffspinhitreversalanim;
- }
- if(targetanimation==swordslashanim&&findDistancefast(&victim->coords,&coords)<2&&((victim->id==0&&victim->crouchkeydown)||Random()%4==0)){
- if(victim->weaponactive!=-1){
- victim->throwtogglekeydown=1;
- weapons.owner[victim->weaponids[0]]=-1;
- weapons.velocity[victim->weaponids[0]]=victim->velocity*.2;
- if(weapons.velocity[victim->weaponids[0]].x==0)weapons.velocity[victim->weaponids[0]].x=.1;
- weapons.tipvelocity[victim->weaponids[0]]=weapons.velocity[victim->weaponids[0]];
- weapons.missed[victim->weaponids[0]]=1;
- weapons.freetime[victim->weaponids[0]]=0;
- weapons.firstfree[victim->weaponids[0]]=1;
- weapons.physics[victim->weaponids[0]]=1;
- victim->num_weapons--;
- if(victim->num_weapons){
- victim->weaponids[0]=victim->weaponids[victim->num_weapons];
- if(victim->weaponstuck==victim->num_weapons)victim->weaponstuck=0;
- }
-
- victim->weaponactive=-1;
- for(int j=0;j<numplayers;j++){
- player[j].wentforweapon=0;
- }
- }
- targetanimation=swordslashreversedanim;
- currentanimation=swordslashreversedanim;
- victim->currentanimation=swordslashreversalanim;
- victim->targetanimation=swordslashreversalanim;
- }
- if(targetanimation==knifeslashstartanim&&findDistancefast(&victim->coords,&coords)<2&&(victim->id==0||Random()%4==0)){
- if(victim->weaponactive!=-1){
- victim->throwtogglekeydown=1;
- weapons.owner[victim->weaponids[0]]=-1;
- weapons.velocity[victim->weaponids[0]]=victim->velocity*.2;
- if(weapons.velocity[victim->weaponids[0]].x==0)weapons.velocity[victim->weaponids[0]].x=.1;
- weapons.tipvelocity[victim->weaponids[0]]=weapons.velocity[victim->weaponids[0]];
- weapons.missed[victim->weaponids[0]]=1;
- weapons.freetime[victim->weaponids[0]]=0;
- weapons.firstfree[victim->weaponids[0]]=1;
- weapons.physics[victim->weaponids[0]]=1;
- victim->num_weapons--;
- if(victim->num_weapons){
- victim->weaponids[0]=victim->weaponids[victim->num_weapons];
- if(victim->weaponstuck==victim->num_weapons)victim->weaponstuck=0;
- }
-
- victim->weaponactive=-1;
- for(int j=0;j<numplayers;j++){
- player[j].wentforweapon=0;
- }
- }
- targetanimation=knifeslashreversedanim;
- currentanimation=knifeslashreversedanim;
- victim->currentanimation=knifeslashreversalanim;
- victim->targetanimation=knifeslashreversalanim;
- }
- if(targetanimation!=knifeslashstartanim&&targetanimation!=staffhitanim&&targetanimation!=staffspinhitanim&&targetanimation!=winduppunchanim&&targetanimation!=wolfslapanim&&targetanimation!=swordslashanim&&targetanimation!=swordslashanim){
- victim->targettilt2=targettilt2;
- victim->currentframe=currentframe;
- victim->targetframe=targetframe;
- victim->target=target;
- victim->velocity=0;
- victim->oldcoords=victim->coords;
- victim->coords=coords;
- victim->targetrotation=targetrotation;
- victim->rotation=targetrotation;
- victim->victim=this;
- }
- if(targetanimation==winduppunchanim){
- targetanimation=winduppunchblockedanim;
- victim->targetanimation=blockhighleftanim;
- victim->targetframe=1;
- victim->target=.5;
- victim->victim=this;
- victim->targetrotation=targetrotation+180;
- }
- if(targetanimation==wolfslapanim){
- targetanimation=winduppunchblockedanim;
- victim->targetanimation=blockhighleftanim;
- victim->targetframe=1;
- victim->target=.5;
- victim->victim=this;
- victim->targetrotation=targetrotation+180;
- }
- if((targetanimation==swordslashanim||targetanimation==staffhitanim||targetanimation==staffspinhitanim)&&victim->weaponactive!=-1){
- targetanimation=swordslashparriedanim;
- parriedrecently=.4;
- victim->parriedrecently=0;
- victim->targetanimation=swordslashparryanim;
- victim->targetframe=1;
- victim->target=.5;
- victim->victim=this;
- victim->targetrotation=targetrotation+180;
-
- if(abs(Random()%20)==0||weapons.type[victim->weaponids[victim->weaponactive]]==knife){
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- if(victim->weaponactive!=-1){
- if(weapons.type[victim->weaponids[0]]==staff||weapons.type[weaponids[0]]==staff){
- if(weapons.type[victim->weaponids[0]]==staff)weapons.damage[victim->weaponids[0]]+=.2+float(abs(Random()%100)-50)/250;
- if(weapons.type[weaponids[0]]==staff)weapons.damage[weaponids[0]]+=.2+float(abs(Random()%100)-50)/250;
-
- PlaySoundEx( swordstaffsound, samp[swordstaffsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[swordstaffsound], gLoc, vel);
- OPENAL_SetVolume(channels[swordstaffsound], 512);
- OPENAL_SetPaused(channels[swordstaffsound], false);
- }
- else{
- PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
- OPENAL_SetVolume(channels[metalhitsound], 512);
- OPENAL_SetPaused(channels[metalhitsound], false);
- }
- }
- XYZ aim;
- victim->Puff(righthand);
- victim->target=0;
- victim->targetframe=0;
- victim->targetanimation=staggerbackhighanim;
- victim->targetrotation=targetrotation+180;
- victim->target=0;
- weapons.owner[victim->weaponids[0]]=-1;
- aim=DoRotation(facing,0,90,0)*21;
- aim.y+=7;
- weapons.velocity[victim->weaponids[0]]=aim*-.2;
- weapons.tipvelocity[victim->weaponids[0]]=aim;
- weapons.missed[victim->weaponids[0]]=1;
- weapons.hitsomething[victim->weaponids[0]]=0;
- weapons.freetime[victim->weaponids[0]]=0;
- weapons.firstfree[victim->weaponids[0]]=1;
- weapons.physics[victim->weaponids[0]]=1;
- victim->num_weapons--;
- if(victim->num_weapons){
- victim->weaponids[0]=victim->weaponids[num_weapons];
- if(victim->weaponstuck==victim->num_weapons)victim->weaponstuck=0;
- }
- victim->weaponactive=-1;
- for(int i=0;i<numplayers;i++){
- player[i].wentforweapon=0;
- }
-
-
-
-
-
- /*PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
- OPENAL_SetVolume(channels[metalhitsound], 512);
- OPENAL_SetPaused(channels[metalhitsound], false);*/
- }
-
- if(abs(Random()%20)==0){
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- if(weaponactive!=-1){
- if(weapons.type[victim->weaponids[0]]==staff||weapons.type[weaponids[0]]==staff){
- if(weapons.type[victim->weaponids[0]]==staff)weapons.damage[victim->weaponids[0]]+=.2+float(abs(Random()%100)-50)/250;
- if(weapons.type[weaponids[0]]==staff)weapons.damage[weaponids[0]]+=.2+float(abs(Random()%100)-50)/250;
-
- PlaySoundEx( swordstaffsound, samp[swordstaffsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[swordstaffsound], gLoc, vel);
- OPENAL_SetVolume(channels[swordstaffsound], 512);
- OPENAL_SetPaused(channels[swordstaffsound], false);
- }
- else{
- PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
- OPENAL_SetVolume(channels[metalhitsound], 512);
- OPENAL_SetPaused(channels[metalhitsound], false);
- }
- }
-
- XYZ aim;
- Puff(righthand);
- target=0;
- targetframe=0;
- targetanimation=staggerbackhighanim;
- targetrotation=targetrotation+180;
- target=0;
- weapons.owner[weaponids[0]]=-1;
- aim=DoRotation(facing,0,90,0)*21;
- aim.y+=7;
- weapons.velocity[weaponids[0]]=aim*-.2;
- weapons.tipvelocity[weaponids[0]]=aim;
- weapons.hitsomething[weaponids[0]]=0;
- weapons.missed[weaponids[0]]=1;
- weapons.freetime[weaponids[0]]=0;
- weapons.firstfree[weaponids[0]]=1;
- weapons.physics[weaponids[0]]=1;
- num_weapons--;
- if(num_weapons){
- weaponids[0]=weaponids[num_weapons];
- if(weaponstuck==num_weapons)weaponstuck=0;
- }
- weaponactive=-1;
- for(int i=0;i<numplayers;i++){
- player[i].wentforweapon=0;
- }
-
-
- /*PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
- OPENAL_SetVolume(channels[metalhitsound], 512);
- OPENAL_SetPaused(channels[metalhitsound], false);*/
- }
- }
- if(hasvictim)
- if(targetanimation==knifeslashstartanim||targetanimation==swordslashanim||targetanimation==staffhitanim||targetanimation==staffspinhitanim){
- if((targetanimation!=staffhitanim&&targetanimation!=staffspinhitanim)||findDistancefast(&coords,&victim->coords)>.2){
- //victim->targetanimation=sweepanim;
- victim->targetanimation=dodgebackanim;
- victim->targetframe=0;
- victim->target=0;
- //victim->velocity=0;
-
- XYZ rotatetarget;
- rotatetarget=coords-victim->coords;
- Normalise(&rotatetarget);
- victim->targetrotation=-asin(0-rotatetarget.x);
- victim->targetrotation*=360/6.28;
- if(rotatetarget.z<0)victim->targetrotation=180-victim->targetrotation;
-
- victim->targettilt2=-asin(rotatetarget.y)*360/6.28;//*-70;
-
- victim->lastattack3=victim->lastattack2;
- victim->lastattack2=victim->lastattack;
- victim->lastattack=victim->targetanimation;
- }
- else
- {
- victim->targetanimation=sweepanim;
- victim->targetframe=0;
- victim->target=0;
-
- XYZ rotatetarget;
- rotatetarget=coords-victim->coords;
- Normalise(&rotatetarget);
- victim->targetrotation=-asin(0-rotatetarget.x);
- victim->targetrotation*=360/6.28;
- if(rotatetarget.z<0)victim->targetrotation=180-victim->targetrotation;
-
- victim->targettilt2=-asin(rotatetarget.y)*360/6.28;//*-70;
-
- victim->lastattack3=victim->lastattack2;
- victim->lastattack2=victim->lastattack;
- victim->lastattack=victim->targetanimation;
- }
- }
+ else{
+ emit_sound_at(metalhitsound, coords);
+ }
+ }
+
+ XYZ aim;
+ Puff(righthand);
+ target=0;
+ frameTarget=0;
+ animTarget=staggerbackhighanim;
+ targetyaw=targetyaw+180;
+ target=0;
+ weapons[weaponids[0]].owner=-1;
+ aim=DoRotation(facing,0,90,0)*21;
+ aim.y+=7;
+ weapons[weaponids[0]].velocity=aim*-.2;
+ weapons[weaponids[0]].tipvelocity=aim;
+ weapons[weaponids[0]].hitsomething=0;
+ weapons[weaponids[0]].missed=1;
+ weapons[weaponids[0]].freetime=0;
+ weapons[weaponids[0]].firstfree=1;
+ weapons[weaponids[0]].physics=1;
+ num_weapons--;
+ if(num_weapons){
+ weaponids[0]=weaponids[num_weapons];
+ if(weaponstuck==num_weapons)weaponstuck=0;
+ }
+ weaponactive=-1;
+ for(int i=0;i<numplayers;i++){
+ player[i].wentforweapon=0;
+ }
+
+
+ }
+ }
+ if(hasvictim)
+ if(animTarget==knifeslashstartanim||animTarget==swordslashanim||animTarget==staffhitanim||animTarget==staffspinhitanim){
+ if((animTarget!=staffhitanim&&animTarget!=staffspinhitanim)||distsq(&coords,&victim->coords)>.2){
+ victim->animTarget=dodgebackanim;
+ victim->frameTarget=0;
+ victim->target=0;
+
+ XYZ rotatetarget;
+ rotatetarget=coords-victim->coords;
+ Normalise(&rotatetarget);
+ victim->targetyaw=-asin(0-rotatetarget.x);
+ victim->targetyaw*=360/6.28;
+ if(rotatetarget.z<0)victim->targetyaw=180-victim->targetyaw;
+
+ victim->targettilt2=-asin(rotatetarget.y)*360/6.28;//*-70;
+
+ victim->lastattack3=victim->lastattack2;
+ victim->lastattack2=victim->lastattack;
+ victim->lastattack=victim->animTarget;
+ }
+ else
+ {
+ victim->animTarget=sweepanim;
+ victim->frameTarget=0;
+ victim->target=0;
+
+ XYZ rotatetarget;
+ rotatetarget=coords-victim->coords;
+ Normalise(&rotatetarget);
+ victim->targetyaw=-asin(0-rotatetarget.x);
+ victim->targetyaw*=360/6.28;
+ if(rotatetarget.z<0)victim->targetyaw=180-victim->targetyaw;
+
+ victim->targettilt2=-asin(rotatetarget.y)*360/6.28;//*-70;
+
+ victim->lastattack3=victim->lastattack2;
+ victim->lastattack2=victim->lastattack;
+ victim->lastattack=victim->animTarget;
+ }
+ }
- velocity=0;
- victim->velocity=0;
+ velocity=0;
+ victim->velocity=0;
- if(aitype!=playercontrolled)feint=0;
- if(aitype!=playercontrolled&&Random()%3==0&&escapednum<2&&difficulty==2)feint=1;
- if(aitype!=playercontrolled&&Random()%5==0&&escapednum<2&&difficulty==1)feint=1;
- if(aitype!=playercontrolled&&Random()%10==0&&escapednum<2&&difficulty==0)feint=1;
+ if(aitype!=playercontrolled)feint=0;
+ if(aitype!=playercontrolled&&Random()%3==0&&escapednum<2&&difficulty==2)feint=1;
+ if(aitype!=playercontrolled&&Random()%5==0&&escapednum<2&&difficulty==1)feint=1;
+ if(aitype!=playercontrolled&&Random()%10==0&&escapednum<2&&difficulty==0)feint=1;
- if(victim->id==0&&animation[victim->targetanimation].attack==reversal)numreversals++;
- }
+ if(victim->id==0&&animation[victim->animTarget].attack==reversal)numreversals++;
}
void Person::DoDamage(float howmuch){
for(int i=0;i<skeleton.num_joints; i++){
if(!skeleton.free)flatvelocity2=velocity;
if(skeleton.free)flatvelocity2=skeleton.joints[i].velocity;
- if(!skeleton.free)flatfacing2=DoRotation(DoRotation(DoRotation(skeleton.joints[i].position,0,0,tilt),tilt2,0,0),0,rotation,0)*scale+coords;
+ if(!skeleton.free)flatfacing2=DoRotation(DoRotation(DoRotation(skeleton.joints[i].position,0,0,tilt),tilt2,0,0),0,yaw,0)*scale+coords;
if(skeleton.free)flatfacing2=skeleton.joints[i].position*scale+coords;
flatvelocity2.x+=(float)(abs(Random()%100)-50)/10;
flatvelocity2.y+=(float)(abs(Random()%100)-50)/10;
Sprite::MakeSprite(cloudsprite, flatfacing2,flatvelocity2*0, .6,0,0, 1, .5);
}
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=0;
- vel[1]=0;
- vel[2]=0;
- PlaySoundEx( splattersound, samp[splattersound], NULL, true);
- OPENAL_3D_SetAttributes(channels[splattersound], gLoc, vel);
- OPENAL_SetVolume(channels[splattersound], 256);
- OPENAL_SetPaused(channels[splattersound], false);
+ emit_sound_at(splattersound, coords);
skeleton.free=2;
DoDamage(10000);
slomodelay=.2;
}*/
if(!dead&&creature==wolftype){
- bonus=Wolfbonus;
- bonustime=0;
- bonusvalue=300;
+ award_bonus(0, Wolfbonus);
}
dead=2;
coords=20;
if(tutoriallevel!=1||id==0)
if(speechdelay<=0&&!dead&&aitype!=playercontrolled){
int whichsound=-1;
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
if(creature==wolftype){
int i=abs(Random()%2);
}
if(whichsound!=-1){
- PlaySoundEx( whichsound, samp[whichsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel);
- OPENAL_SetVolume(channels[whichsound], 512);
- OPENAL_SetPaused(channels[whichsound], false);
+ emit_sound_at(whichsound, coords);
}
}
speechdelay=.3;
if(!freeze&&!winfreeze){
//head facing
- targetheadrotation=(float)((int)((0-rotation-targetheadrotation+180)*100)%36000)/100;
- targetheadrotation2=(float)((int)(targetheadrotation2*100)%36000)/100;
+ targetheadyaw=(float)((int)((0-yaw-targetheadyaw+180)*100)%36000)/100;
+ targetheadpitch=(float)((int)(targetheadpitch*100)%36000)/100;
- while(targetheadrotation>180)targetheadrotation-=360;
- while(targetheadrotation<-180)targetheadrotation+=360;
+ while(targetheadyaw>180)targetheadyaw-=360;
+ while(targetheadyaw<-180)targetheadyaw+=360;
- if(targetheadrotation>160)targetheadrotation2=targetheadrotation2*-1;
- if(targetheadrotation<-160)targetheadrotation2=targetheadrotation2*-1;
- if(targetheadrotation>160)targetheadrotation=targetheadrotation-180;
- if(targetheadrotation<-160)targetheadrotation=targetheadrotation+180;
+ if(targetheadyaw>160)targetheadpitch=targetheadpitch*-1;
+ if(targetheadyaw<-160)targetheadpitch=targetheadpitch*-1;
+ if(targetheadyaw>160)targetheadyaw=targetheadyaw-180;
+ if(targetheadyaw<-160)targetheadyaw=targetheadyaw+180;
- if(targetheadrotation2>120)targetheadrotation2=120;
- if(targetheadrotation2<-120)targetheadrotation2=-120;
- if(targetheadrotation>120)targetheadrotation=120;
- if(targetheadrotation<-120)targetheadrotation=-120;
+ if(targetheadpitch>120)targetheadpitch=120;
+ if(targetheadpitch<-120)targetheadpitch=-120;
+ if(targetheadyaw>120)targetheadyaw=120;
+ if(targetheadyaw<-120)targetheadyaw=-120;
- if(!isIdle())targetheadrotation2=0;
+ if(!isIdle())targetheadpitch=0;
if(isIdle()){
- if(targetheadrotation>80)targetheadrotation=80;
- if(targetheadrotation<-80)targetheadrotation=-80;
- if(targetheadrotation2>50)targetheadrotation2=50;
- if(targetheadrotation2<-50)targetheadrotation2=-50;
+ if(targetheadyaw>80)targetheadyaw=80;
+ if(targetheadyaw<-80)targetheadyaw=-80;
+ if(targetheadpitch>50)targetheadpitch=50;
+ if(targetheadpitch<-50)targetheadpitch=-50;
}
- if(abs(headrotation-targetheadrotation)<multiplier*lookspeed)headrotation=targetheadrotation;
- else if(headrotation>targetheadrotation){
- headrotation-=multiplier*lookspeed;
+ if(abs(headyaw-targetheadyaw)<multiplier*lookspeed)headyaw=targetheadyaw;
+ else if(headyaw>targetheadyaw){
+ headyaw-=multiplier*lookspeed;
}
- else if(headrotation<targetheadrotation){
- headrotation+=multiplier*lookspeed;
+ else if(headyaw<targetheadyaw){
+ headyaw+=multiplier*lookspeed;
}
- if(abs(headrotation2-targetheadrotation2)<multiplier*lookspeed/2)headrotation2=targetheadrotation2;
- else if(headrotation2>targetheadrotation2){
- headrotation2-=multiplier*lookspeed/2;
+ if(abs(headpitch-targetheadpitch)<multiplier*lookspeed/2)headpitch=targetheadpitch;
+ else if(headpitch>targetheadpitch){
+ headpitch-=multiplier*lookspeed/2;
}
- else if(headrotation2<targetheadrotation2){
- headrotation2+=multiplier*lookspeed/2;
+ else if(headpitch<targetheadpitch){
+ headpitch+=multiplier*lookspeed/2;
}
rotatearound=skeleton.joints[skeleton.jointlabels[neck]].position;
- skeleton.joints[skeleton.jointlabels[head]].position=rotatearound+DoRotation(skeleton.joints[skeleton.jointlabels[head]].position-rotatearound,headrotation2,0,0);
+ skeleton.joints[skeleton.jointlabels[head]].position=rotatearound+DoRotation(skeleton.joints[skeleton.jointlabels[head]].position-rotatearound,headpitch,0,0);
facing=0;
facing.z=-1;
- if(targetanimation!=bounceidleanim&&targetanimation!=fightidleanim&&targetanimation!=wolfidle&&targetanimation!=knifefightidleanim&&targetanimation!=drawrightanim&&targetanimation!=drawleftanim&&targetanimation!=walkanim){
- facing=DoRotation(facing,headrotation2*.4,0,0);
- facing=DoRotation(facing,0,headrotation*.4,0);
+ if(animTarget!=bounceidleanim&&animTarget!=fightidleanim&&animTarget!=wolfidle&&animTarget!=knifefightidleanim&&animTarget!=drawrightanim&&animTarget!=drawleftanim&&animTarget!=walkanim){
+ facing=DoRotation(facing,headpitch*.4,0,0);
+ facing=DoRotation(facing,0,headyaw*.4,0);
}
- if(targetanimation==bounceidleanim||targetanimation==fightidleanim||targetanimation==wolfidle||targetanimation==knifefightidleanim||targetanimation==drawrightanim||targetanimation==drawleftanim){
- facing=DoRotation(facing,headrotation2*.8,0,0);
- facing=DoRotation(facing,0,headrotation*.8,0);
+ if(animTarget==bounceidleanim||animTarget==fightidleanim||animTarget==wolfidle||animTarget==knifefightidleanim||animTarget==drawrightanim||animTarget==drawleftanim){
+ facing=DoRotation(facing,headpitch*.8,0,0);
+ facing=DoRotation(facing,0,headyaw*.8,0);
}
- if(targetanimation==walkanim){
- facing=DoRotation(facing,headrotation2*.6,0,0);
- facing=DoRotation(facing,0,headrotation*.6,0);
+ if(animTarget==walkanim){
+ facing=DoRotation(facing,headpitch*.6,0,0);
+ facing=DoRotation(facing,0,headyaw*.6,0);
}
skeleton.specialforward[0]=facing;
- //skeleton.specialforward[0]=DoRotation(facing,0,rotation,0);
+ //skeleton.specialforward[0]=DoRotation(facing,0,yaw,0);
static int i;
for(i=0;i<skeleton.num_muscles;i++){
if(skeleton.muscles[i].visible&&(skeleton.muscles[i].parent1->label==head||skeleton.muscles[i].parent2->label==head))
{
- skeleton.FindRotationMuscle(i,targetanimation);
+ skeleton.FindRotationMuscle(i,animTarget);
}
}
}
facing=0;
facing.z=1;
- facing=DoRotation(facing,0,rotation,0);
+ facing=DoRotation(facing,0,yaw,0);
skeleton.freetime=0;
if(!isnormal(velocity.x))velocity.x=0;
if(!isnormal(velocity.y))velocity.y=0;
if(!isnormal(velocity.z))velocity.z=0;
- if(!isnormal(rotation))rotation=0;
+ if(!isnormal(yaw))yaw=0;
if(!isnormal(coords.x))coords=0;
if(!isnormal(tilt))tilt=0;
if(!isnormal(tilt2))tilt2=0;
for(i=0;i<skeleton.num_joints;i++){
skeleton.joints[i].delay=0;
skeleton.joints[i].locked=0;
- skeleton.joints[i].position=DoRotation(DoRotation(DoRotation(skeleton.joints[i].position,0,0,tilt),tilt2,0,0),0,rotation,0);
- if(!isnormal(skeleton.joints[i].position.x))skeleton.joints[i].position=DoRotation(skeleton.joints[i].position,0,rotation,0);
+ skeleton.joints[i].position=DoRotation(DoRotation(DoRotation(skeleton.joints[i].position,0,0,tilt),tilt2,0,0),0,yaw,0);
+ if(!isnormal(skeleton.joints[i].position.x))skeleton.joints[i].position=DoRotation(skeleton.joints[i].position,0,yaw,0);
if(!isnormal(skeleton.joints[i].position.x))skeleton.joints[i].position=skeleton.joints[i].position;
if(!isnormal(skeleton.joints[i].position.x))skeleton.joints[i].position=coords;
skeleton.joints[i].position.y+=.1;
skeleton.joints[i].velchange=0;
}
skeleton.DoConstraints(&coords,&scale);
- if(animation[currentanimation].height==lowheight||animation[targetanimation].height==lowheight)
+ if(animation[animCurrent].height==lowheight||animation[animTarget].height==lowheight)
{
skeleton.DoConstraints(&coords,&scale);
skeleton.DoConstraints(&coords,&scale);
skeleton.DoConstraints(&coords,&scale);
}
- speed=animation[targetanimation].speed[targetframe]*2;
- if(animation[currentanimation].speed[currentframe]>animation[targetanimation].speed[targetframe]){
- speed=animation[currentanimation].speed[currentframe]*2;
+ speed=animation[animTarget].speed[frameTarget]*2;
+ if(animation[animCurrent].speed[frameCurrent]>animation[animTarget].speed[frameTarget]){
+ speed=animation[animCurrent].speed[frameCurrent]*2;
}
if(transspeed)speed=transspeed*2;
speed*=speedmult;
for(i=0;i<skeleton.num_joints;i++){
- if((animation[currentanimation].attack!=reversed||currentanimation==swordslashreversedanim)&¤tanimation!=rabbitkickanim&&!isLanding()&&!wasLanding()&&animation[currentanimation].height==animation[targetanimation].height)skeleton.joints[i].velocity=velocity/scale+facing*5+DoRotation(DoRotation(DoRotation((animation[targetanimation].position[i][targetframe]-animation[currentanimation].position[i][currentframe])*speed,0,0,tilt),tilt2,0,0),0,rotation,0);
+ if((animation[animCurrent].attack!=reversed||animCurrent==swordslashreversedanim)&&animCurrent!=rabbitkickanim&&!isLanding()&&!wasLanding()&&animation[animCurrent].height==animation[animTarget].height)skeleton.joints[i].velocity=velocity/scale+facing*5+DoRotation(DoRotation(DoRotation((animation[animTarget].position[i][frameTarget]-animation[animCurrent].position[i][frameCurrent])*speed,0,0,tilt),tilt2,0,0),0,yaw,0);
else skeleton.joints[i].velocity=velocity/scale+facing*5;
change.x=(float)(Random()%100)/100;
change.y=(float)(Random()%100)/100;
skeleton.joints[j].position-=average;
}
- whichpatchx=coords.x/(terrain.size/subdivision*terrain.scale*terraindetail);
- whichpatchz=coords.z/(terrain.size/subdivision*terrain.scale*terraindetail);
+ whichpatchx=coords.x/(terrain.size/subdivision*terrain.scale);
+ whichpatchz=coords.z/(terrain.size/subdivision*terrain.scale);
if(terrain.patchobjectnum[whichpatchx][whichpatchz])
for(l=0;l<terrain.patchobjectnum[whichpatchx][whichpatchz];l++){
i=terrain.patchobjects[whichpatchx][whichpatchz][l];
lowpoint=coords;
lowpoint.y+=1;
- if(SphereCheck(&lowpoint, 3, &colpoint, &objects.position[i], &objects.rotation[i], &objects.model[i])!=-1){
+ if(SphereCheck(&lowpoint, 3, &colpoint, &objects.position[i], &objects.yaw[i], &objects.model[i])!=-1){
coords.x=lowpoint.x;
coords.z=lowpoint.z;
}
}
}
- rotation=0;
+ yaw=0;
updatedelay=0;
velocity=0;
velocity/=skeleton.num_joints;
if(Random()%2==0){
- if(weaponactive!=-1&&targetanimation!=rabbitkickanim&&num_weapons>0){
- weapons.owner[weaponids[0]]=-1;
- weapons.hitsomething[weaponids[0]]=0;
- weapons.velocity[weaponids[0]]=skeleton.joints[skeleton.jointlabels[righthand]].velocity*scale*-.3;
- weapons.velocity[weaponids[0]].x+=.01;
- weapons.tipvelocity[weaponids[0]]=skeleton.joints[skeleton.jointlabels[righthand]].velocity*scale;
- weapons.missed[weaponids[0]]=1;
- weapons.freetime[weaponids[0]]=0;
- weapons.firstfree[weaponids[0]]=1;
- weapons.physics[weaponids[0]]=1;
+ if(weaponactive!=-1&&animTarget!=rabbitkickanim&&num_weapons>0){
+ weapons[weaponids[0]].owner=-1;
+ weapons[weaponids[0]].hitsomething=0;
+ weapons[weaponids[0]].velocity=skeleton.joints[skeleton.jointlabels[righthand]].velocity*scale*-.3;
+ weapons[weaponids[0]].velocity.x+=.01;
+ weapons[weaponids[0]].tipvelocity=skeleton.joints[skeleton.jointlabels[righthand]].velocity*scale;
+ weapons[weaponids[0]].missed=1;
+ weapons[weaponids[0]].freetime=0;
+ weapons[weaponids[0]].firstfree=1;
+ weapons[weaponids[0]].physics=1;
num_weapons--;
if(num_weapons){
weaponids[0]=weaponids[num_weapons];
}
}
- targetanimation=bounceidleanim;
- currentanimation=bounceidleanim;
- targetframe=0;
- currentframe=0;
+ animTarget=bounceidleanim;
+ animCurrent=bounceidleanim;
+ frameTarget=0;
+ frameCurrent=0;
}
}
if(opacity>1)
{
footvel=0;
- if(which==0)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,rotation,0)*scale+coords;
- if(which==1)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,rotation,0)*scale+coords;
+ if(which==0)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,yaw,0)*scale+coords;
+ if(which==1)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,yaw,0)*scale+coords;
//footpoint.y=coords.y;
- if(findDistancefast(&footpoint,&viewer))Sprite::MakeSprite(cloudsprite, footpoint,footvel, 1,1,1, .5, .2*opacity);
+ if(distsq(&footpoint,&viewer))Sprite::MakeSprite(cloudsprite, footpoint,footvel, 1,1,1, .5, .2*opacity);
}
else if(environment==snowyenvironment&&onterrain&&terrain.getOpacity(coords.x,coords.z)<.2){
footvel=velocity/5;
if(footvel.y<.8)footvel.y=.8;
- if(which==0)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,rotation,0)*scale+coords;
- if(which==1)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,rotation,0)*scale+coords;
+ if(which==0)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,yaw,0)*scale+coords;
+ if(which==1)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,yaw,0)*scale+coords;
footpoint.y=terrain.getHeight(footpoint.x,footpoint.z);
terrainlight=terrain.getLighting(footpoint.x,footpoint.z);
- if(findDistancefast(&footpoint,&viewer)<viewdistance*viewdistance/4)Sprite::MakeSprite(cloudsprite, footpoint,footvel*.6, terrainlight.x,terrainlight.y,terrainlight.z, .5, .7*opacity);
- if(opacity>=1||detail==2)if(detail==2)if(findDistancefast(&footpoint,&viewer)<viewdistance*viewdistance/4)terrain.MakeDecal(footprintdecal,footpoint,.2,1*opacity,rotation);
+ if(distsq(&footpoint,&viewer)<viewdistance*viewdistance/4)Sprite::MakeSprite(cloudsprite, footpoint,footvel*.6, terrainlight.x,terrainlight.y,terrainlight.z, .5, .7*opacity);
+ if(opacity>=1||detail==2)if(detail==2)if(distsq(&footpoint,&viewer)<viewdistance*viewdistance/4)terrain.MakeDecal(footprintdecal,footpoint,.2,1*opacity,yaw);
}
else if(environment==grassyenvironment&&onterrain&&terrain.getOpacity(coords.x,coords.z)<.2){
footvel=velocity/5;
if(footvel.y<.8)footvel.y=.8;
- if(which==0)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,rotation,0)*scale+coords;
- if(which==1)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,rotation,0)*scale+coords;
+ if(which==0)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,yaw,0)*scale+coords;
+ if(which==1)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,yaw,0)*scale+coords;
footpoint.y=terrain.getHeight(footpoint.x,footpoint.z);
terrainlight=terrain.getLighting(footpoint.x,footpoint.z);
- if(findDistancefast(&footpoint,&viewer)<viewdistance*viewdistance/4)Sprite::MakeSprite(cloudsprite, footpoint,footvel*.6, terrainlight.x*90/255,terrainlight.y*70/255,terrainlight.z*8/255, .5, .5*opacity);
+ if(distsq(&footpoint,&viewer)<viewdistance*viewdistance/4)Sprite::MakeSprite(cloudsprite, footpoint,footvel*.6, terrainlight.x*90/255,terrainlight.y*70/255,terrainlight.z*8/255, .5, .5*opacity);
}
else if(environment==desertenvironment&&onterrain&&terrain.getOpacity(coords.x,coords.z)<.2){
footvel=velocity/5;
if(footvel.y<.8)footvel.y=.8;
- if(which==0)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,rotation,0)*scale+coords;
- if(which==1)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,rotation,0)*scale+coords;
+ if(which==0)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,yaw,0)*scale+coords;
+ if(which==1)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,yaw,0)*scale+coords;
footpoint.y=terrain.getHeight(footpoint.x,footpoint.z);
terrainlight=terrain.getLighting(footpoint.x,footpoint.z);
- if(findDistancefast(&footpoint,&viewer)<viewdistance*viewdistance/4)Sprite::MakeSprite(cloudsprite, footpoint,footvel*.6, terrainlight.x*190/255,terrainlight.y*170/255,terrainlight.z*108/255, .5, .7*opacity);
- if(opacity>=1||detail==2)if(detail==2)if(findDistancefast(&footpoint,&viewer)<viewdistance*viewdistance/4)terrain.MakeDecal(footprintdecal,footpoint,.2,.25*opacity,rotation);
+ if(distsq(&footpoint,&viewer)<viewdistance*viewdistance/4)Sprite::MakeSprite(cloudsprite, footpoint,footvel*.6, terrainlight.x*190/255,terrainlight.y*170/255,terrainlight.z*108/255, .5, .7*opacity);
+ if(opacity>=1||detail==2)if(detail==2)if(distsq(&footpoint,&viewer)<viewdistance*viewdistance/4)terrain.MakeDecal(footprintdecal,footpoint,.2,.25*opacity,yaw);
}
- else if(isLanding()||targetanimation==jumpupanim||isLandhard())
+ else if(isLanding()||animTarget==jumpupanim||isLandhard())
{
footvel=velocity/5;
if(footvel.y<.8)footvel.y=.8;
- if(which==0)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,rotation,0)*scale+coords;
- if(which==1)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,rotation,0)*scale+coords;
+ if(which==0)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,yaw,0)*scale+coords;
+ if(which==1)footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,yaw,0)*scale+coords;
//footpoint.y=coords.y;
- if(findDistancefast(&footpoint,&viewer)<viewdistance*viewdistance/4)Sprite::MakeSprite(cloudsprite, footpoint,footvel*.6, 1,1,1, .5, .2*opacity);
+ if(distsq(&footpoint,&viewer)<viewdistance*viewdistance/4)Sprite::MakeSprite(cloudsprite, footpoint,footvel*.6, 1,1,1, .5, .2*opacity);
}
}
static XYZ footvel,footpoint;
footvel=0;
- footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[whichlabel]].position,0,rotation,0)*scale+coords;
+ footpoint=DoRotation(skeleton.joints[skeleton.jointlabels[whichlabel]].position,0,yaw,0)*scale+coords;
Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,1,1, .9, .3);
}
+Joint& Person::getJointFor(int bodypart) {
+ return skeleton.joints[skeleton.jointlabels[bodypart]];
+}
+
+void Person::setAnimation(int animation) {
+ animTarget=animation;
+ frameTarget=0;
+ target=0;
+}
void Person::DoAnimations(){
if(!skeleton.free){
int i = 0;
static float oldtarget;
- if(isIdle()&¤tanimation!=getIdle())normalsupdatedelay=0;
+ if(isIdle()&&animCurrent!=getIdle())normalsupdatedelay=0;
- if(targetanimation==tempanim||currentanimation==tempanim){
+ if(animTarget==tempanim||animCurrent==tempanim){
animation[tempanim]=tempanimation;
}
- if(targetanimation==jumpupanim||targetanimation==jumpdownanim||isFlip()){
+ if(animTarget==jumpupanim||animTarget==jumpdownanim||isFlip()){
float gLoc[3];
float vel[3];
gLoc[0]=coords.x;
if(((velocity.y<-15)||(crouchkeydown&&velocity.y<-8))&&abs(velocity.y)*4>fast_sqrt(velocity.x*velocity.x*velocity.z*velocity.z))landhard=1;
if(!crouchkeydown&&velocity.y>=-15)landhard=0;
}
- if((currentanimation==jumpupanim||targetanimation==jumpdownanim)/*&&velocity.y<40*/&&!isFlip()&&(!isLanding()&&!isLandhard())&&((crouchkeydown&&!crouchtogglekeydown))){
+ if((animCurrent==jumpupanim||animTarget==jumpdownanim)/*&&velocity.y<40*/&&!isFlip()&&(!isLanding()&&!isLandhard())&&((crouchkeydown&&!crouchtogglekeydown))){
XYZ targfacing;
targfacing=0;
targfacing.z=1;
- targfacing=DoRotation(targfacing,0,targetrotation,0);
+ targfacing=DoRotation(targfacing,0,targetyaw,0);
- if(normaldotproduct(targfacing,velocity)>=-.3)targetanimation=flipanim;
- else targetanimation=backflipanim;
+ if(normaldotproduct(targfacing,velocity)>=-.3)animTarget=flipanim;
+ else animTarget=backflipanim;
crouchtogglekeydown=1;
- targetframe=0;
+ frameTarget=0;
target=0;
if(id==0)numflipped++;
}
- if(animation[targetanimation].attack!=reversed)feint=0;
+ if(animation[animTarget].attack!=reversed)feint=0;
if(!crouchkeydown||(isLanding()||isLandhard())||(wasLanding()||wasLandhard())){
crouchtogglekeydown=0;
if(aitype==playercontrolled)feint=0;
}
else
{
- if(!crouchtogglekeydown&&animation[targetanimation].attack==reversed&&aitype==playercontrolled&&(escapednum<2||reversaltrain))feint=1;
+ if(!crouchtogglekeydown&&animation[animTarget].attack==reversed&&aitype==playercontrolled&&(escapednum<2||reversaltrain))feint=1;
if(!isFlip())crouchtogglekeydown=1;
}
- if(animation[targetanimation].attack||currentanimation==getupfrombackanim||currentanimation==getupfromfrontanim){
+ if(animation[animTarget].attack||animCurrent==getupfrombackanim||animCurrent==getupfromfrontanim){
if(detail)normalsupdatedelay=0;
}
if(target>=1){
- if(targetanimation==rollanim&&targetframe==3&&onfire){
+ if(animTarget==rollanim&&frameTarget==3&&onfire){
onfire=0;
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=0;
- vel[1]=0;
- vel[2]=0;
- PlaySoundEx( fireendsound, samp[fireendsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[fireendsound], gLoc, vel);
- OPENAL_SetVolume(channels[fireendsound], 256);
- OPENAL_SetPaused(channels[fireendsound], false);
- OPENAL_SetPaused(channels[stream_firesound], true);
+ emit_sound_at(fireendsound, coords);
+ pause_sound(stream_firesound);
deathbleeding=0;
}
- if(targetanimation==rabbittacklinganim&&targetframe==1){
- //if(victim->aitype==attacktypecutoff&&Random()%2==0&&victim->stunned<=0&&animation[victim->targetanimation].attack==neutral&&victim->id!=0)Reverse();
+ if(animTarget==rabbittacklinganim&&frameTarget==1){
+ //if(victim->aitype==attacktypecutoff&&Random()%2==0&&victim->stunned<=0&&animation[victim->animTarget].attack==neutral&&victim->id!=0)Reverse();
if(victim->aitype==attacktypecutoff&&victim->stunned<=0&&victim->surprised<=0&&victim->id!=0)Reverse();
- if(targetanimation==rabbittacklinganim&&targetframe==1&&!victim->isCrouch()&&victim->targetanimation!=backhandspringanim){
- if(normaldotproduct(victim->facing,facing)>0)victim->targetanimation=rabbittackledbackanim;
- else victim->targetanimation=rabbittackledfrontanim;
- victim->targetframe=2;
+ if(animTarget==rabbittacklinganim&&frameTarget==1&&!victim->isCrouch()&&victim->animTarget!=backhandspringanim){
+ if(normaldotproduct(victim->facing,facing)>0)victim->animTarget=rabbittackledbackanim;
+ else victim->animTarget=rabbittackledfrontanim;
+ victim->frameTarget=2;
victim->target=0;
- victim->rotation=rotation;
- victim->targetrotation=rotation;
+ victim->yaw=yaw;
+ victim->targetyaw=yaw;
if(victim->aitype==gethelptype)victim->DoDamage(victim->damagetolerance-victim->damage);
//victim->DoDamage(30);
if(creature==wolftype){
DoBloodBig(0,255);
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
- OPENAL_SetVolume(channels[clawslicesound], 128);
- OPENAL_SetPaused(channels[clawslicesound], false);
+ emit_sound_at(clawslicesound, victim->coords);
victim->spurt=1;
victim->DoBloodBig(1/victim->armorhead,210);
}
- if(id==0){
- bonus=TackleBonus;
- bonustime=0;
- bonusvalue=5;
- if(victim->aitype==gethelptype)bonusvalue=50;
- }
+ award_bonus(id, TackleBonus,
+ victim->aitype == gethelptype ? 50 : 0);
}
}
- if(!drawtogglekeydown&&drawkeydown&&(weaponactive==-1||num_weapons==1)&&(animation[targetanimation].label[targetframe]||(targetanimation!=currentanimation&¤tanimation==rollanim))&&num_weapons>0&&creature!=wolftype){
- if(weapons.type[weaponids[0]]==knife){
+ if(!drawtogglekeydown&&drawkeydown&&(weaponactive==-1||num_weapons==1)&&(animation[animTarget].label[frameTarget]||(animTarget!=animCurrent&&animCurrent==rollanim))&&num_weapons>0&&creature!=wolftype){
+ if(weapons[weaponids[0]].getType()==knife){
if(weaponactive==-1)weaponactive=0;
else if(weaponactive==0)weaponactive=-1;
if(weaponactive==-1){
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
-
- PlaySoundEx( knifesheathesound, samp[knifesheathesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[knifesheathesound], gLoc, vel);
- OPENAL_SetVolume(channels[knifesheathesound], 128);
- OPENAL_SetPaused(channels[knifesheathesound], false);
+ emit_sound_at(knifesheathesound, coords);
}
if(weaponactive!=-1){
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
-
- PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
- OPENAL_SetVolume(channels[knifedrawsound], 128);
- OPENAL_SetPaused(channels[knifedrawsound], false);
+ emit_sound_at(knifedrawsound, coords, 128);
}
}
drawtogglekeydown=1;
}
//Footstep sounds
if(tutoriallevel!=1||id==0)
- if((animation[targetanimation].label[targetframe]&&(animation[targetanimation].label[targetframe]<5||animation[targetanimation].label[targetframe]==8))/*||(targetanimation==rollanim&&targetframe==animation[rollanim].numframes-1)*/){
+ if((animation[animTarget].label[frameTarget]&&(animation[animTarget].label[frameTarget]<5||animation[animTarget].label[frameTarget]==8))/*||(animTarget==rollanim&&frameTarget==animation[rollanim].numframes-1)*/){
int whichsound;
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
if(onterrain){
if(terrain.getOpacity(coords.x,coords.z)<.2){
- if(animation[targetanimation].label[targetframe]==1)whichsound=footstepsound;
+ if(animation[animTarget].label[frameTarget]==1)whichsound=footstepsound;
else whichsound=footstepsound2;
- if(animation[targetanimation].label[targetframe]==1)FootLand(0,1);
- if(animation[targetanimation].label[targetframe]==2)FootLand(1,1);
- if(animation[targetanimation].label[targetframe]==3&&isRun()){
+ if(animation[animTarget].label[frameTarget]==1)FootLand(0,1);
+ if(animation[animTarget].label[frameTarget]==2)FootLand(1,1);
+ if(animation[animTarget].label[frameTarget]==3&&isRun()){
FootLand(1,1);
FootLand(0,1);
}
}
if(terrain.getOpacity(coords.x,coords.z)>=.2){
- if(animation[targetanimation].label[targetframe]==1)whichsound=footstepsound3;
+ if(animation[animTarget].label[frameTarget]==1)whichsound=footstepsound3;
else whichsound=footstepsound4;
}
}
if(!onterrain){
- if(animation[targetanimation].label[targetframe]==1)whichsound=footstepsound3;
+ if(animation[animTarget].label[frameTarget]==1)whichsound=footstepsound3;
else whichsound=footstepsound4;
}
- if(animation[targetanimation].label[targetframe]==4&&(weaponactive==-1||(targetanimation!=knifeslashstartanim&&targetanimation!=knifethrowanim&&targetanimation!=crouchstabanim&&targetanimation!=swordgroundstabanim&&targetanimation!=knifefollowanim))){
- if(animation[targetanimation].attack!=neutral){
+ if(animation[animTarget].label[frameTarget]==4&&(weaponactive==-1||(animTarget!=knifeslashstartanim&&animTarget!=knifethrowanim&&animTarget!=crouchstabanim&&animTarget!=swordgroundstabanim&&animTarget!=knifefollowanim))){
+ if(animation[animTarget].attack!=neutral){
i=abs(Random()%3);
if(i==0)whichsound=lowwhooshsound;
if(i==1)whichsound=midwhooshsound;
if(i==2)whichsound=highwhooshsound;
}
- if(animation[targetanimation].attack==neutral)whichsound=movewhooshsound;
+ if(animation[animTarget].attack==neutral)whichsound=movewhooshsound;
}
- else if(animation[targetanimation].label[targetframe]==4)whichsound=knifeswishsound;
- if(animation[targetanimation].label[targetframe]==8&&tutoriallevel!=1)whichsound=landsound2;
+ else if(animation[animTarget].label[frameTarget]==4)whichsound=knifeswishsound;
+ if(animation[animTarget].label[frameTarget]==8&&tutoriallevel!=1)whichsound=landsound2;
- PlaySoundEx( whichsound, samp[whichsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel);
- if(whichsound!=knifeswishsound)OPENAL_SetVolume(channels[whichsound], 128);
- if(whichsound!=knifeswishsound&&(targetanimation==staffhitanim||targetanimation==staffgroundsmashanim||targetanimation==staffspinhitanim))OPENAL_SetVolume(channels[whichsound], 256);
- if(whichsound==knifeswishsound)OPENAL_SetVolume(channels[whichsound], 512);
- OPENAL_SetPaused(channels[whichsound], false);
+ emit_sound_at(whichsound, coords, 256.);
if(id==0)
if(whichsound==footstepsound||whichsound==footstepsound2||whichsound==footstepsound3||whichsound==footstepsound4){
envsound[numenvsounds]=coords;
- if(targetanimation==wolfrunninganim||targetanimation==rabbitrunninganim)envsoundvol[numenvsounds]=15;
+ if(animTarget==wolfrunninganim||animTarget==rabbitrunninganim)envsoundvol[numenvsounds]=15;
else envsoundvol[numenvsounds]=6;
envsoundlife[numenvsounds]=.4;
numenvsounds++;
}
- if(animation[targetanimation].label[targetframe]==3){
+ if(animation[animTarget].label[frameTarget]==3){
whichsound--;
- PlaySoundEx( whichsound, samp[whichsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel);
- OPENAL_SetVolume(channels[whichsound], 128);
- OPENAL_SetPaused(channels[whichsound], false);
+ emit_sound_at(whichsound, coords, 128.);
}
}
//Combat sounds
if(tutoriallevel!=1||id==0)
if(speechdelay<=0)
- if(targetanimation!=crouchstabanim&&targetanimation!=swordgroundstabanim&&targetanimation!=staffgroundsmashanim)
- if((animation[targetanimation].label[targetframe]&&(animation[targetanimation].label[targetframe]<5||animation[targetanimation].label[targetframe]==8))/*||(targetanimation==rollanim&&targetframe==animation[rollanim].numframes-1)*/){
+ if(animTarget!=crouchstabanim&&animTarget!=swordgroundstabanim&&animTarget!=staffgroundsmashanim)
+ if((animation[animTarget].label[frameTarget]&&(animation[animTarget].label[frameTarget]<5||animation[animTarget].label[frameTarget]==8))/*||(animTarget==rollanim&&frameTarget==animation[rollanim].numframes-1)*/){
int whichsound=-1;
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- if(animation[targetanimation].label[targetframe]==4&&aitype!=playercontrolled){
- if(animation[targetanimation].attack!=neutral){
+ if(animation[animTarget].label[frameTarget]==4&&aitype!=playercontrolled){
+ if(animation[animTarget].attack!=neutral){
i=abs(Random()%4);
if(creature==rabbittype){
if(i==0)whichsound=rabbitattacksound;
}
speechdelay=.3;
}
- //if(animation[targetanimation].attack==neutral)whichsound=movewhooshsound;
+ //if(animation[animTarget].attack==neutral)whichsound=movewhooshsound;
}
- //else if(animation[targetanimation].label[targetframe]==4)whichsound=knifeswishsound;
- //if(animation[targetanimation].label[targetframe]==8)whichsound=landsound2;
+ //else if(animation[animTarget].label[frameTarget]==4)whichsound=knifeswishsound;
+ //if(animation[animTarget].label[frameTarget]==8)whichsound=landsound2;
if(whichsound!=-1){
- PlaySoundEx( whichsound, samp[whichsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel);
- OPENAL_SetVolume(channels[whichsound], 512);
- OPENAL_SetPaused(channels[whichsound], false);
+ emit_sound_at(whichsound, coords);
}
}
- if((!wasLanding()&&!wasLandhard())&¤tanimation!=getIdle()&&(isLanding()||isLandhard())){
+ if((!wasLanding()&&!wasLandhard())&&animCurrent!=getIdle()&&(isLanding()||isLandhard())){
FootLand(0,1);
FootLand(1,1);
}
transspeed=0;
currentoffset=targetoffset;
- targetframe=currentframe;
- currentanimation=targetanimation;
- targetframe++;
-
- if(targetanimation==removeknifeanim&&animation[targetanimation].label[currentframe]==5){
- for(i=0;i<weapons.numweapons;i++){
- if(/*weapons.velocity[i].x==0&&weapons.velocity[i].y==0&&weapons.velocity[i].z==0&&*/weapons.owner[i]==-1)
- if(findDistancefastflat(&coords,&weapons.position[i])<4&&weaponactive==-1){
- if(findDistancefast(&coords,&weapons.position[i])>=1){
- if(weapons.type[i]!=staff){
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
- OPENAL_SetVolume(channels[knifedrawsound], 128);
- OPENAL_SetPaused(channels[knifedrawsound], false);
+ frameTarget=frameCurrent;
+ animCurrent=animTarget;
+ frameTarget++;
+
+ if(animTarget==removeknifeanim&&animation[animTarget].label[frameCurrent]==5){
+ for(i=0;i<weapons.size();i++){
+ if(weapons[i].owner==-1)
+ if(distsqflat(&coords,&weapons[i].position)<4&&weaponactive==-1){
+ if(distsq(&coords,&weapons[i].position)>=1){
+ if(weapons[i].getType()!=staff){
+ emit_sound_at(knifedrawsound, coords, 128.);
}
weaponactive=0;
- weapons.owner[i]=id;
+ weapons[i].owner=id;
if(num_weapons>0){
weaponids[num_weapons]=weaponids[0];
}
}
}
- static bool willwork;
- if(targetanimation==crouchremoveknifeanim&&animation[targetanimation].label[currentframe]==5){
- for(i=0;i<weapons.numweapons;i++){
- bool willwork=1;
- if(weapons.owner[i]!=-1)
- if(player[weapons.owner[i]].weaponstuck!=-1)
- if(player[weapons.owner[i]].weaponids[player[weapons.owner[i]].weaponstuck]==i)
- if(player[weapons.owner[i]].num_weapons>1)willwork=0;
- if((/*weapons.velocity[i].x==0&&weapons.velocity[i].y==0&&weapons.velocity[i].z==0&&*/weapons.owner[i]==-1)||(hasvictim&&weapons.owner[i]==victim->id&&victim->skeleton.free))
- if(willwork&&findDistancefastflat(&coords,&weapons.position[i])<3&&weaponactive==-1){
- if(findDistancefast(&coords,&weapons.position[i])<1||hasvictim){
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- bool fleshstuck=0;
- if(weapons.owner[i]!=-1)
+ if(animTarget==crouchremoveknifeanim&&animation[animTarget].label[frameCurrent]==5){
+ for(i=0;i<weapons.size();i++){
+ bool willwork=true;
+ if(weapons[i].owner!=-1)
+ if(player[weapons[i].owner].weaponstuck!=-1)
+ if(player[weapons[i].owner].weaponids[player[weapons[i].owner].weaponstuck]==i)
+ if(player[weapons[i].owner].num_weapons>1)willwork=0;
+ if((weapons[i].owner==-1)||(hasvictim&&weapons[i].owner==victim->id&&victim->skeleton.free))
+ if(willwork&&distsqflat(&coords,&weapons[i].position)<3&&weaponactive==-1){
+ if(distsq(&coords,&weapons[i].position)<1||hasvictim){
+ bool fleshstuck=false;
+ if(weapons[i].owner!=-1)
if(victim->weaponstuck!=-1){
if(victim->weaponids[victim->weaponstuck]==i){
- fleshstuck=1;
- }
- }
- if(!fleshstuck){
- if(weapons.type[i]!=staff){
- PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
- OPENAL_SetVolume(channels[knifedrawsound], 128);
- OPENAL_SetPaused(channels[knifedrawsound], false);
+ fleshstuck=true;
}
}
if(fleshstuck){
- PlaySoundEx( fleshstabremovesound, samp[fleshstabremovesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel);
- OPENAL_SetVolume(channels[fleshstabremovesound], 128);
- OPENAL_SetPaused(channels[fleshstabremovesound], false);
+ emit_sound_at(fleshstabremovesound, coords, 128.);
+ } else {
+ if(weapons[i].getType()!=staff){
+ emit_sound_at(knifedrawsound, coords, 128.);
+ }
}
weaponactive=0;
- if(weapons.owner[i]!=-1){
+ if(weapons[i].owner!=-1){
- victim=&player[weapons.owner[i]];
+ victim=&player[weapons[i].owner];
if(victim->num_weapons==1)victim->num_weapons=0;
else victim->num_weapons=1;
Normalise(&relative);
XYZ footvel,footpoint;
footvel=0;
- footpoint=weapons.position[i];
+ footpoint=weapons[i].position;
if(victim->weaponstuck!=-1){
if(victim->weaponids[victim->weaponstuck]==i){
if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .8, .3);
- weapons.bloody[i]=2;
- weapons.blooddrip[i]=5;
+ weapons[i].bloody=2;
+ weapons[i].blooddrip=5;
victim->weaponstuck=-1;
}
}
victim->skeleton.joints[victim->skeleton.jointlabels[rightshoulder]].velocity+=relative*6;
victim->skeleton.joints[victim->skeleton.jointlabels[leftshoulder]].velocity+=relative*6;
}
- weapons.owner[i]=id;
+ weapons[i].owner=id;
if(num_weapons>0){
weaponids[num_weapons]=weaponids[0];
}
}
}
- if(currentanimation==drawleftanim&&animation[targetanimation].label[currentframe]==5){
+ if(animCurrent==drawleftanim&&animation[animTarget].label[frameCurrent]==5){
if(weaponactive==-1)weaponactive=0;
else if(weaponactive==0){
weaponactive=-1;
}
}
if(weaponactive==-1){
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
-
- PlaySoundEx( knifesheathesound, samp[knifesheathesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[knifesheathesound], gLoc, vel);
- OPENAL_SetVolume(channels[knifesheathesound], 128);
- OPENAL_SetPaused(channels[knifesheathesound], false);
+ emit_sound_at(knifesheathesound, coords, 128.);
}
if(weaponactive!=-1){
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
-
- PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
- OPENAL_SetVolume(channels[knifedrawsound], 128);
- OPENAL_SetPaused(channels[knifedrawsound], false);
+ emit_sound_at(knifedrawsound, coords, 128.);
}
}
- if((currentanimation==walljumprightkickanim&&targetanimation==walljumprightkickanim)||(currentanimation==walljumpleftkickanim&&targetanimation==walljumpleftkickanim)){
- XYZ rotatetarget=DoRotation(skeleton.forward,0,rotation,0);
+ if((animCurrent==walljumprightkickanim&&animTarget==walljumprightkickanim)||(animCurrent==walljumpleftkickanim&&animTarget==walljumpleftkickanim)){
+ XYZ rotatetarget=DoRotation(skeleton.forward,0,yaw,0);
Normalise(&rotatetarget);
- targetrotation=-asin(0-rotatetarget.x);
- targetrotation*=360/6.28;
- if(rotatetarget.z<0)targetrotation=180-targetrotation;
+ targetyaw=-asin(0-rotatetarget.x);
+ targetyaw*=360/6.28;
+ if(rotatetarget.z<0)targetyaw=180-targetyaw;
- if(targetanimation==walljumprightkickanim)targetrotation+=40;
- if(targetanimation==walljumpleftkickanim)targetrotation-=40;
+ if(animTarget==walljumprightkickanim)targetyaw+=40;
+ if(animTarget==walljumpleftkickanim)targetyaw-=40;
}
bool dojumpattack;
dojumpattack=0;
- if((targetanimation==rabbitrunninganim||targetanimation==wolfrunninganim)&&targetframe==3&&(jumpkeydown||attackkeydown||id!=0))dojumpattack=1;
+ if((animTarget==rabbitrunninganim||animTarget==wolfrunninganim)&&frameTarget==3&&(jumpkeydown||attackkeydown||id!=0))dojumpattack=1;
if(hasvictim)
- if(findDistancefast(&victim->coords,&/*player[i].*/coords)<5&&victim->aitype==gethelptype&&(attackkeydown)&&!victim->skeleton.free&&victim->isRun()&&victim->runninghowlong>=1)dojumpattack=1; if(!hostile)dojumpattack=0;
+ if(distsq(&victim->coords,&/*player[i].*/coords)<5&&victim->aitype==gethelptype&&(attackkeydown)&&!victim->skeleton.free&&victim->isRun()&&victim->runninghowlong>=1)dojumpattack=1; if(!hostile)dojumpattack=0;
if(dojumpattack){
- if((targetanimation==rabbitrunninganim||targetanimation==wolfrunninganim)&&id==0){
- targetanimation=rabbittackleanim;
- targetframe=0;
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
-
- PlaySoundEx( jumpsound, samp[jumpsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[jumpsound], gLoc, vel);
- OPENAL_SetVolume(channels[jumpsound], 128);
- OPENAL_SetPaused(channels[jumpsound], false);
+ if((animTarget==rabbitrunninganim||animTarget==wolfrunninganim)&&id==0){
+ animTarget=rabbittackleanim;
+ frameTarget=0;
+ emit_sound_at(jumpsound, coords);
}
float closestdist;
targetloc+=coords;
for(i=0;i<numplayers;i++){
if(i!=id)
- if(findDistancefast(&targetloc,&player[i].coords)<closestdist||closestdist==0){
- closestdist=findDistancefast(&targetloc,&player[i].coords);
+ if(distsq(&targetloc,&player[i].coords)<closestdist||closestdist==0){
+ closestdist=distsq(&targetloc,&player[i].coords);
closestid=i;
}
}
if(closestid!=-1)
- if(closestdist<5&&!player[closestid].dead&&animation[player[closestid].targetanimation].height!=lowheight&&player[closestid].targetanimation!=backhandspringanim){
+ if(closestdist<5&&!player[closestid].dead&&animation[player[closestid].animTarget].height!=lowheight&&player[closestid].animTarget!=backhandspringanim){
hasvictim=1;
victim=&player[closestid];
coords=victim->coords;
- currentanimation=rabbittacklinganim;
- targetanimation=rabbittacklinganim;
- currentframe=0;
- targetframe=1;
+ animCurrent=rabbittacklinganim;
+ animTarget=rabbittacklinganim;
+ frameCurrent=0;
+ frameTarget=1;
XYZ rotatetarget;
if(coords.z!=victim->coords.z||coords.x!=victim->coords.x){
rotatetarget=coords-victim->coords;
Normalise(&rotatetarget);
- targetrotation=-asin(0-rotatetarget.x);
- targetrotation*=360/6.28;
- if(rotatetarget.z<0)targetrotation=180-targetrotation;
+ targetyaw=-asin(0-rotatetarget.x);
+ targetyaw*=360/6.28;
+ if(rotatetarget.z<0)targetyaw=180-targetyaw;
}
- if(targetanimation!=rabbitrunninganim){
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
-
- PlaySoundEx( jumpsound, samp[jumpsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[jumpsound], gLoc, vel);
- OPENAL_SetVolume(channels[jumpsound], 128);
- OPENAL_SetPaused(channels[jumpsound], false);
+ if(animTarget!=rabbitrunninganim){
+ emit_sound_at(jumpsound, coords, 128.);
}
}
}
if(creature==wolftype)damagemult=2.5*power;
if(hasvictim){damagemult/=victim->damagetolerance/200;}
//if(onfire)damagemult=3;
- if((animation[targetanimation].attack==normalattack||targetanimation==walljumprightkickanim||targetanimation==walljumpleftkickanim)&&(!feint)&&(victim->skeleton.free!=2||targetanimation==killanim||targetanimation==dropkickanim||targetanimation==crouchstabanim||targetanimation==swordgroundstabanim||targetanimation==staffgroundsmashanim)){
- if(targetanimation==spinkickanim&&animation[targetanimation].label[currentframe]==5){
- if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&3&&animation[victim->targetanimation].height!=lowheight){
+ if((animation[animTarget].attack==normalattack||animTarget==walljumprightkickanim||animTarget==walljumpleftkickanim)&&(!feint)&&(victim->skeleton.free!=2||animTarget==killanim||animTarget==dropkickanim||animTarget==crouchstabanim||animTarget==swordgroundstabanim||animTarget==staffgroundsmashanim)){
+ if(animTarget==spinkickanim&&animation[animTarget].label[frameCurrent]==5){
+ if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&3&&animation[victim->animTarget].height!=lowheight){
escapednum=0;
if(id==0)camerashake+=.4;
if(Random()%2||creature==wolftype){
DoBlood(.2,250);
if(creature==wolftype)DoBloodBig(0,250);
}
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
if(tutoriallevel!=1){
- PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
- OPENAL_SetVolume(channels[heavyimpactsound], 128);
- OPENAL_SetPaused(channels[heavyimpactsound], false);
+ emit_sound_at(heavyimpactsound, victim->coords, 128.);
}
if(creature==wolftype){
- PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
- OPENAL_SetVolume(channels[clawslicesound], 128);
- OPENAL_SetPaused(channels[clawslicesound], false);
+ emit_sound_at(clawslicesound, victim->coords, 128.);
victim->spurt=1;
victim->DoBloodBig(2/victim->armorhead,175);
}
victim->Puff(head);
victim->DoDamage(damagemult*100/victim->protectionhead);
- if(id==0){
- SolidHitBonus();
- }
+ SolidHitBonus(id);
}
}
- if(targetanimation==wolfslapanim&&animation[targetanimation].label[currentframe]==5){
- if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&3&&animation[victim->targetanimation].height!=lowheight){
+ if(animTarget==wolfslapanim&&animation[animTarget].label[frameCurrent]==5){
+ if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&3&&animation[victim->animTarget].height!=lowheight){
escapednum=0;
if(id==0)camerashake+=.4;
if(Random()%2||creature==wolftype){
victim->spurt=1;
if(creature==wolftype)DoBloodBig(0,235);
}
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- PlaySoundEx( whooshhitsound, samp[whooshhitsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[whooshhitsound], gLoc, vel);
- OPENAL_SetVolume(channels[whooshhitsound], 512);
- OPENAL_SetPaused(channels[whooshhitsound], false);
+ emit_sound_at(whooshhitsound, victim->coords);
if(creature==wolftype){
- PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
- OPENAL_SetVolume(channels[clawslicesound], 128);
- OPENAL_SetPaused(channels[clawslicesound], false);
+ emit_sound_at(clawslicesound, victim->coords, 128.);
victim->spurt=1;
victim->DoBloodBig(2,175);
}
}
}
- if(targetanimation==walljumprightkickanim&&animation[targetanimation].label[currentframe]==5){
- if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&animation[victim->targetanimation].height!=lowheight){
+ if(animTarget==walljumprightkickanim&&animation[animTarget].label[frameCurrent]==5){
+ if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&animation[victim->animTarget].height!=lowheight){
escapednum=0;
if(id==0)camerashake+=.4;
victim->spurt=1;
DoBlood(.2,250);
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
if(tutoriallevel!=1){
- PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
- OPENAL_SetVolume(channels[heavyimpactsound], 160);
- OPENAL_SetPaused(channels[heavyimpactsound], false);
+ emit_sound_at(heavyimpactsound, victim->coords, 160.);
}
if(creature==wolftype){
- PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
- OPENAL_SetVolume(channels[clawslicesound], 128);
- OPENAL_SetPaused(channels[clawslicesound], false);
+ emit_sound_at(clawslicesound, victim->coords, 128.);
victim->spurt=1;
victim->DoBloodBig(2/victim->armorhead,175);
}
victim->Puff(head);
victim->DoDamage(damagemult*150/victim->protectionhead);
- if(victim->damage>victim->damagetolerance){
- if(id==0){
- bonus=style;
- bonustime=0;
- bonusvalue=150;
- }
- }
- else if(id==0){
- SolidHitBonus();
- }
+ if(victim->damage>victim->damagetolerance)
+ award_bonus(id, style);
+ else
+ SolidHitBonus(id);
}
}
- if(targetanimation==walljumpleftkickanim&&animation[targetanimation].label[currentframe]==5){
- if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&animation[victim->targetanimation].height!=lowheight){
+ if(animTarget==walljumpleftkickanim&&animation[animTarget].label[frameCurrent]==5){
+ if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&animation[victim->animTarget].height!=lowheight){
escapednum=0;
if(id==0)camerashake+=.4;
victim->spurt=1;
DoBlood(.2,250);
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
if(tutoriallevel!=1){
- PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
- OPENAL_SetVolume(channels[heavyimpactsound], 160);
- OPENAL_SetPaused(channels[heavyimpactsound], false);
+ emit_sound_at(heavyimpactsound, victim->coords, 160.);
}
if(creature==wolftype){
- PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
- OPENAL_SetVolume(channels[clawslicesound], 128);
- OPENAL_SetPaused(channels[clawslicesound], false);
+ emit_sound_at(clawslicesound, victim->coords, 128.);
victim->spurt=1;
victim->DoBloodBig(2/victim->armorhead,175);
}
victim->Puff(head);
victim->DoDamage(damagemult*150/victim->protectionhead);
- if(victim->damage>victim->damagetolerance){
- if(id==0){
- bonus=style;
- bonustime=0;
- bonusvalue=150;
- }
- }
- else if(id==0){
- SolidHitBonus();
- }
+ if(victim->damage>victim->damagetolerance)
+ award_bonus(id, style);
+ else
+ SolidHitBonus(id);
}
}
- if(targetanimation==blockhighleftstrikeanim&&animation[targetanimation].label[currentframe]==5){
- if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&animation[victim->targetanimation].height!=lowheight){
+ if(animTarget==blockhighleftstrikeanim&&animation[animTarget].label[frameCurrent]==5){
+ if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&animation[victim->animTarget].height!=lowheight){
escapednum=0;
if(id==0)camerashake+=.4;
if(Random()%2){
victim->spurt=1;
DoBlood(.2,235);
}
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- PlaySoundEx( whooshhitsound, samp[whooshhitsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[whooshhitsound], gLoc, vel);
- OPENAL_SetVolume(channels[whooshhitsound], 512);
- OPENAL_SetPaused(channels[whooshhitsound], false);
+ emit_sound_at(whooshhitsound, victim->coords);
victim->RagDoll(0);
XYZ relative;
relative=victim->coords-coords;
}
}
- if(targetanimation==killanim&&animation[targetanimation].label[currentframe]==8){
- if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&victim->dead){
+ if(animTarget==killanim&&animation[animTarget].label[frameCurrent]==8){
+ if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&victim->dead){
escapednum=0;
if(id==0)camerashake+=.2;
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- /*PlaySoundEx( landsound2, samp[landsound2], NULL, true);
- OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel);
- OPENAL_SetVolume(channels[landsound2], 128);
- OPENAL_SetPaused(channels[landsound2], false);
- */
- PlaySoundEx( movewhooshsound, samp[movewhooshsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[movewhooshsound], gLoc, vel);
- OPENAL_SetVolume(channels[movewhooshsound], 128);
- OPENAL_SetPaused(channels[movewhooshsound], false);
+ emit_sound_at(whooshhitsound, victim->coords, 128.);
victim->skeleton.longdead=0;
victim->skeleton.free=1;
}
}
- if(targetanimation==killanim&&animation[targetanimation].label[currentframe]==5){
- if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*9&&victim->dead){
+ if(animTarget==killanim&&animation[animTarget].label[frameCurrent]==5){
+ if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*9&&victim->dead){
escapednum=0;
if(id==0)camerashake+=.4;
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
if(tutoriallevel!=1){
- PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
- OPENAL_SetVolume(channels[heavyimpactsound], 128);
- OPENAL_SetPaused(channels[heavyimpactsound], false);
+ emit_sound_at(heavyimpactsound, coords, 128.);
}
XYZ relative;
relative=victim->coords-coords;
}
}
- if(targetanimation==dropkickanim&&animation[targetanimation].label[currentframe]==7){
- if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*9&&victim->skeleton.free){
+ if(animTarget==dropkickanim&&animation[animTarget].label[frameCurrent]==7){
+ if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*9&&victim->skeleton.free){
escapednum=0;
if(id==0)camerashake+=.4;
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
if(tutoriallevel!=1){
- PlaySoundEx( thudsound, samp[thudsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[thudsound], gLoc, vel);
- OPENAL_SetVolume(channels[thudsound], 400);
- OPENAL_SetPaused(channels[thudsound], false);
+ emit_sound_at(thudsound, coords);
}
victim->skeleton.longdead=0;
for(i=0;i<victim->skeleton.num_joints;i++){
victim->skeleton.joints[i].velocity+=relative*damagemult*20;
}
- if(id==0&&!victim->dead){
- SolidHitBonus();
- }
+ if(!victim->dead)
+ SolidHitBonus(id);
victim->Puff(abdomen);
victim->DoDamage(damagemult*20/victim->protectionhigh);
}
}
- if((targetanimation==crouchstabanim||targetanimation==swordgroundstabanim)&&animation[targetanimation].label[currentframe]==5){
- // if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*9){
+ if((animTarget==crouchstabanim||animTarget==swordgroundstabanim)&&animation[animTarget].label[frameCurrent]==5){
//if(id==0)camerashake+=.4;
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
if(hasvictim)
if(!victim->skeleton.free)hasvictim=0;
if(!hasvictim){
- terrain.MakeDecal(blooddecalfast,(weapons.tippoint[weaponids[weaponactive]]*.8+weapons.position[weaponids[weaponactive]]*.2),.08,.6,Random()%360);
- PlaySoundEx( knifesheathesound, samp[knifesheathesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[knifesheathesound], gLoc, vel);
- OPENAL_SetVolume(channels[knifesheathesound], 128);
- OPENAL_SetPaused(channels[knifesheathesound], false);
+ terrain.MakeDecal(blooddecalfast,(weapons[weaponids[weaponactive]].tippoint*.8+weapons[weaponids[weaponactive]].position*.2),.08,.6,Random()%360);
+ emit_sound_at(knifesheathesound, coords, 128.);
}
if(victim&&hasvictim){
- if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*3){
+ if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*3){
XYZ where,startpoint,endpoint,movepoint,colpoint;
float rotationpoint;
int whichtri;
- if(weapons.type[weaponids[weaponactive]]==knife){
- where=(weapons.tippoint[weaponids[weaponactive]]*.6+weapons.position[weaponids[weaponactive]]*.4);
+ if(weapons[weaponids[weaponactive]].getType()==knife){
+ where=(weapons[weaponids[weaponactive]].tippoint*.6+weapons[weaponids[weaponactive]].position*.4);
where-=victim->coords;
- if(!victim->skeleton.free)where=DoRotation(where,0,-victim->rotation,0);
+ if(!victim->skeleton.free)where=DoRotation(where,0,-victim->yaw,0);
//where=scale;
startpoint=where;
startpoint.y+=100;
endpoint=where;
endpoint.y-=100;
}
- if(weapons.type[weaponids[weaponactive]]==sword){
- where=weapons.position[weaponids[weaponactive]];
+ if(weapons[weaponids[weaponactive]].getType()==sword){
+ where=weapons[weaponids[weaponactive]].position;
where-=victim->coords;
- if(!victim->skeleton.free)where=DoRotation(where,0,-victim->rotation,0);
+ if(!victim->skeleton.free)where=DoRotation(where,0,-victim->yaw,0);
startpoint=where;
- where=weapons.tippoint[weaponids[weaponactive]];
+ where=weapons[weaponids[weaponactive]].tippoint;
where-=victim->coords;
- if(!victim->skeleton.free)where=DoRotation(where,0,-victim->rotation,0);
+ if(!victim->skeleton.free)where=DoRotation(where,0,-victim->yaw,0);
endpoint=where;
}
- if(weapons.type[weaponids[weaponactive]]==staff){
- where=weapons.position[weaponids[weaponactive]];
+ if(weapons[weaponids[weaponactive]].getType()==staff){
+ where=weapons[weaponids[weaponactive]].position;
where-=victim->coords;
- if(!victim->skeleton.free)where=DoRotation(where,0,-victim->rotation,0);
+ if(!victim->skeleton.free)where=DoRotation(where,0,-victim->yaw,0);
startpoint=where;
- where=weapons.tippoint[weaponids[weaponactive]];
+ where=weapons[weaponids[weaponactive]].tippoint;
where-=victim->coords;
- if(!victim->skeleton.free)where=DoRotation(where,0,-victim->rotation,0);
+ if(!victim->skeleton.free)where=DoRotation(where,0,-victim->yaw,0);
endpoint=where;
}
movepoint=0;
if(whichtri!=-1){
if(victim->dead!=2){
victim->DoDamage(abs((victim->damagetolerance-victim->permanentdamage)*2));
- if(id==0&&!victim->dead){
- bonus=FinishedBonus;
- bonustime=0;
- bonusvalue=200;
- }
+ if (!victim->dead)
+ award_bonus(id, FinishedBonus);
}
- if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2;
+ if(bloodtoggle)weapons[weaponids[weaponactive]].bloody=2;
victim->skeleton.longdead=0;
victim->skeleton.free=1;
victim->skeleton.joints[i].locked=0;
//victim->skeleton.joints[i].velocity=0;
}
- PlaySoundEx( fleshstabsound, samp[fleshstabsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[fleshstabsound], gLoc, vel);
- OPENAL_SetVolume(channels[fleshstabsound], 128);
- OPENAL_SetPaused(channels[fleshstabsound], false);
+ emit_sound_at(fleshstabsound, coords, 128);
}
- if(whichtri!=-1||weapons.bloody[weaponids[weaponactive]]){
- weapons.blooddrip[weaponids[weaponactive]]+=5;
- weapons.blooddripdelay[weaponids[weaponactive]]=0;
+ if(whichtri!=-1||weapons[weaponids[weaponactive]].bloody){
+ weapons[weaponids[weaponactive]].blooddrip+=5;
+ weapons[weaponids[weaponactive]].blooddripdelay=0;
}
if(whichtri==-1){
hasvictim=0;
- PlaySoundEx( knifesheathesound, samp[knifesheathesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[knifesheathesound], gLoc, vel);
- OPENAL_SetVolume(channels[knifesheathesound], 128);
- OPENAL_SetPaused(channels[knifesheathesound], false);
+ emit_sound_at(knifesheathesound, coords, 128.);
}
}
}
}
- if((targetanimation==crouchstabanim||targetanimation==swordgroundstabanim)&&animation[targetanimation].label[currentframe]==6){
- // if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*9){
- //if(id==0)camerashake+=.4;
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
+ if((animTarget==crouchstabanim||animTarget==swordgroundstabanim)&&animation[animTarget].label[frameCurrent]==6){
if(!hasvictim){
- PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
- OPENAL_SetVolume(channels[knifedrawsound], 128);
- OPENAL_SetPaused(channels[knifedrawsound], false);
+ emit_sound_at(knifedrawsound, coords, 128);
}
if(victim&&hasvictim){
XYZ footvel,footpoint;
- PlaySoundEx( fleshstabremovesound, samp[fleshstabremovesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel);
- OPENAL_SetVolume(channels[fleshstabremovesound], 128);
- OPENAL_SetPaused(channels[fleshstabremovesound], false);
+ emit_sound_at(fleshstabremovesound, coords, 128.);
footvel=0;
- footpoint=(weapons.tippoint[weaponids[weaponactive]]*.8+weapons.position[weaponids[weaponactive]]*.2);
+ footpoint=(weapons[weaponids[weaponactive]].tippoint*.8+weapons[weaponids[weaponactive]].position*.2);
- if(weapons.type[weaponids[weaponactive]]==sword){
+ if(weapons[weaponids[weaponactive]].getType()==sword){
XYZ where,startpoint,endpoint,movepoint;
float rotationpoint;
int whichtri;
- where=weapons.position[weaponids[weaponactive]];
+ where=weapons[weaponids[weaponactive]].position;
where-=victim->coords;
- if(!victim->skeleton.free)where=DoRotation(where,0,-victim->rotation,0);
+ if(!victim->skeleton.free)where=DoRotation(where,0,-victim->yaw,0);
startpoint=where;
- where=weapons.tippoint[weaponids[weaponactive]];
+ where=weapons[weaponids[weaponactive]].tippoint;
where-=victim->coords;
- if(!victim->skeleton.free)where=DoRotation(where,0,-victim->rotation,0);
+ if(!victim->skeleton.free)where=DoRotation(where,0,-victim->yaw,0);
endpoint=where;
movepoint=0;
footpoint+=victim->coords;
if(whichtri==-1){
- footpoint=(weapons.tippoint[weaponids[weaponactive]]*.8+weapons.position[weaponids[weaponactive]]*.2);
+ footpoint=(weapons[weaponids[weaponactive]].tippoint*.8+weapons[weaponids[weaponactive]].position*.2);
}
}
- if(weapons.type[weaponids[weaponactive]]==staff){
+ if(weapons[weaponids[weaponactive]].getType()==staff){
XYZ where,startpoint,endpoint,movepoint;
float rotationpoint;
int whichtri;
- where=weapons.position[weaponids[weaponactive]];
+ where=weapons[weaponids[weaponactive]].position;
where-=victim->coords;
- if(!victim->skeleton.free)where=DoRotation(where,0,-victim->rotation,0);
+ if(!victim->skeleton.free)where=DoRotation(where,0,-victim->yaw,0);
startpoint=where;
- where=weapons.tippoint[weaponids[weaponactive]];
+ where=weapons[weaponids[weaponactive]].tippoint;
where-=victim->coords;
- if(!victim->skeleton.free)where=DoRotation(where,0,-victim->rotation,0);
+ if(!victim->skeleton.free)where=DoRotation(where,0,-victim->yaw,0);
endpoint=where;
movepoint=0;
footpoint+=victim->coords;
if(whichtri==-1){
- footpoint=(weapons.tippoint[weaponids[weaponactive]]*.8+weapons.position[weaponids[weaponactive]]*.2);
+ footpoint=(weapons[weaponids[weaponactive]].tippoint*.8+weapons[weaponids[weaponactive]].position*.2);
}
}
hasvictim=victim->DoBloodBigWhere(2,220,footpoint);
if(hasvictim){
- if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*3){
+ if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*3){
victim->skeleton.longdead=0;
victim->skeleton.free=1;
victim->skeleton.broken=0;
}
}
if(!hasvictim&&onterrain){
- weapons.bloody[weaponids[weaponactive]]=0;
- weapons.blooddrip[weaponids[weaponactive]]=0;
+ weapons[weaponids[weaponactive]].bloody=0;
+ weapons[weaponids[weaponactive]].blooddrip=0;
}
}
- if(targetanimation==upunchanim&&animation[targetanimation].label[currentframe]==5){
- if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*3){
+ if(animTarget==upunchanim&&animation[animTarget].label[frameCurrent]==5){
+ if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*3){
escapednum=0;
if(id==0)camerashake+=.4;
if(Random()%2){
victim->spurt=1;
DoBlood(.2,235);
}
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- //if(!victim->isIdle()||victim->damage>victim->damagetolerance-60){
- if(1==1){
- if(tutoriallevel!=1){
- PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
- OPENAL_SetVolume(channels[heavyimpactsound], 128);
- OPENAL_SetPaused(channels[heavyimpactsound], false);
- }
- }
- else {
- if(tutoriallevel!=1){
- PlaySoundEx( landsound2, samp[landsound2], NULL, true);
- OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel);
- OPENAL_SetVolume(channels[landsound2], 256);
- OPENAL_SetPaused(channels[landsound2], false);
- }
+ if(tutoriallevel!=1){
+ emit_sound_at(heavyimpactsound, victim->coords, 128);
}
- //if(!victim->isIdle()||victim->damage>victim->damagetolerance-60)
victim->RagDoll(0);
XYZ relative;
relative=victim->coords-coords;
}
victim->skeleton.joints[victim->skeleton.jointlabels[head]].velocity+=relative*damagemult*150;
- victim->targetframe=0;
- victim->targetanimation=staggerbackhardanim;
- victim->targetrotation=targetrotation+180;
+ victim->frameTarget=0;
+ victim->animTarget=staggerbackhardanim;
+ victim->targetyaw=targetyaw+180;
victim->target=0;
victim->stunned=1;
victim->Puff(abdomen);
victim->DoDamage(damagemult*60/victim->protectionhigh);
- if(id==0){
- SolidHitBonus();
- }
+ SolidHitBonus(id);
}
}
- if(targetanimation==winduppunchanim&&animation[targetanimation].label[currentframe]==5){
- if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*2){
+ if(animTarget==winduppunchanim&&animation[animTarget].label[frameCurrent]==5){
+ if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*2){
escapednum=0;
if(id==0)camerashake+=.4;
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- //if(!victim->isIdle()||victim->damage>victim->damagetolerance-60){
- if(victim->damage<=victim->damagetolerance-60&&normaldotproduct(victim->facing,victim->coords-coords)<(scale*5)*(scale*5)*0&&animation[victim->targetanimation].height!=lowheight){
+ if(victim->damage<=victim->damagetolerance-60&&normaldotproduct(victim->facing,victim->coords-coords)<(scale*5)*(scale*5)*0&&animation[victim->animTarget].height!=lowheight){
if(tutoriallevel!=1){
- PlaySoundEx( thudsound, samp[thudsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[thudsound], gLoc, vel);
- OPENAL_SetVolume(channels[thudsound], 512);
- OPENAL_SetPaused(channels[thudsound], false);
+ emit_sound_at(thudsound, victim->coords);
}
}
- else if(victim->damage<=victim->damagetolerance-60&&normaldotproduct(victim->facing,victim->coords-coords)<(scale*5)*(scale*5)*0&&animation[victim->targetanimation].height==lowheight){
+ else if(victim->damage<=victim->damagetolerance-60&&normaldotproduct(victim->facing,victim->coords-coords)<(scale*5)*(scale*5)*0&&animation[victim->animTarget].height==lowheight){
if(tutoriallevel!=1){
- PlaySoundEx( whooshhitsound, samp[whooshhitsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[whooshhitsound], gLoc, vel);
- OPENAL_SetVolume(channels[whooshhitsound], 512);
- OPENAL_SetPaused(channels[whooshhitsound], false);
+ emit_sound_at(whooshhitsound, victim->coords);
}
}
else {
if(tutoriallevel!=1){
- PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
- OPENAL_SetVolume(channels[heavyimpactsound], 256);
- OPENAL_SetPaused(channels[heavyimpactsound], false);
+ emit_sound_at(heavyimpactsound, victim->coords);
}
}
- if(victim->damage>victim->damagetolerance-60||normaldotproduct(victim->facing,victim->coords-coords)>0||animation[victim->targetanimation].height==lowheight)
+ if(victim->damage>victim->damagetolerance-60||normaldotproduct(victim->facing,victim->coords-coords)>0||animation[victim->animTarget].height==lowheight)
victim->RagDoll(0);
XYZ relative;
relative=victim->coords-coords;
}
victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].velocity+=relative*damagemult*400;
- victim->targetframe=0;
- victim->targetanimation=staggerbackhardanim;
- victim->targetrotation=targetrotation+180;
+ victim->frameTarget=0;
+ victim->animTarget=staggerbackhardanim;
+ victim->targetyaw=targetyaw+180;
victim->target=0;
victim->stunned=1;
victim->Puff(abdomen);
victim->DoDamage(damagemult*60/victim->protectionhigh);
- if(id==0){
- SolidHitBonus();
- }
+ SolidHitBonus(id);
}
}
- if(targetanimation==blockhighleftanim&&animation[targetanimation].label[currentframe]==5){
- if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*4){
+ if(animTarget==blockhighleftanim&&animation[animTarget].label[frameCurrent]==5){
+ if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*4){
if(victim->id==0)camerashake+=.4;
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
-
- PlaySoundEx( landsound2, samp[landsound2], NULL, true);
- OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel);
- OPENAL_SetVolume(channels[landsound2], 256);
- OPENAL_SetPaused(channels[landsound2], false);
+ emit_sound_at(landsound2, victim->coords);
Puff(righthand);
}
}
- if(targetanimation==swordslashparryanim&&animation[targetanimation].label[currentframe]==5){
- if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*4){
+ if(animTarget==swordslashparryanim&&animation[animTarget].label[frameCurrent]==5){
+ if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*4){
if(victim->id==0)camerashake+=.4;
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
if(weaponactive!=-1){
- if(weapons.type[victim->weaponids[0]]==staff||weapons.type[weaponids[0]]==staff){
- if(weapons.type[victim->weaponids[0]]==staff)weapons.damage[victim->weaponids[0]]+=.2+float(abs(Random()%100)-50)/250;
- if(weapons.type[weaponids[0]]==staff)weapons.damage[weaponids[0]]+=.2+float(abs(Random()%100)-50)/250;
-
- PlaySoundEx( swordstaffsound, samp[swordstaffsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[swordstaffsound], gLoc, vel);
- OPENAL_SetVolume(channels[swordstaffsound], 512);
- OPENAL_SetPaused(channels[swordstaffsound], false);
+ if(weapons[victim->weaponids[0]].getType()==staff||weapons[weaponids[0]].getType()==staff){
+ if(weapons[victim->weaponids[0]].getType()==staff)weapons[victim->weaponids[0]].damage+=.2+float(abs(Random()%100)-50)/250;
+ if(weapons[weaponids[0]].getType()==staff)weapons[weaponids[0]].damage+=.2+float(abs(Random()%100)-50)/250;
+
+ emit_sound_at(swordstaffsound, victim->coords);
}
else{
- PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
- OPENAL_SetVolume(channels[metalhitsound], 512);
- OPENAL_SetPaused(channels[metalhitsound], false);
+ emit_sound_at(metalhitsound, victim->coords);
}
}
}
}
- if(targetanimation==knifethrowanim&&animation[targetanimation].label[currentframe]==5){
+ if(animTarget==knifethrowanim&&animation[animTarget].label[frameCurrent]==5){
if(weaponactive!=-1){
escapednum=0;
XYZ aim;
- weapons.owner[weaponids[0]]=-1;
- aim=victim->coords+DoRotation(victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].position,0,victim->rotation,0)*victim->scale+victim->velocity*findDistance(&victim->coords,&coords)/50-(coords+DoRotation(skeleton.joints[skeleton.jointlabels[righthand]].position,0,rotation,0)*scale);
+ weapons[weaponids[0]].owner=-1;
+ aim=victim->coords+DoRotation(victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].position,0,victim->yaw,0)*victim->scale+victim->velocity*findDistance(&victim->coords,&coords)/50-(coords+DoRotation(skeleton.joints[skeleton.jointlabels[righthand]].position,0,yaw,0)*scale);
Normalise(&aim);
- /*if(victim->targetanimation==jumpupanim||victim->targetanimation==jumpdownanim){
+ /*if(victim->animTarget==jumpupanim||victim->animTarget==jumpdownanim){
aim=DoRotation(aim,(float)abs(Random()%15)-7,(float)abs(Random()%15)-7,0);
}*/
- weapons.velocity[weaponids[0]]=aim*50;
- weapons.tipvelocity[weaponids[0]]=aim*50;
- weapons.missed[weaponids[0]]=0;
- weapons.hitsomething[weaponids[0]]=0;
- weapons.freetime[weaponids[0]]=0;
- weapons.firstfree[weaponids[0]]=1;
- weapons.physics[weaponids[0]]=0;
+ weapons[weaponids[0]].velocity=aim*50;
+ weapons[weaponids[0]].tipvelocity=aim*50;
+ weapons[weaponids[0]].missed=0;
+ weapons[weaponids[0]].hitsomething=0;
+ weapons[weaponids[0]].freetime=0;
+ weapons[weaponids[0]].firstfree=1;
+ weapons[weaponids[0]].physics=0;
num_weapons--;
if(num_weapons){
weaponids[0]=weaponids[num_weapons];
}
}
- if(targetanimation==knifeslashstartanim&&animation[targetanimation].label[currentframe]==5){
+ if(animTarget==knifeslashstartanim&&animation[animTarget].label[frameCurrent]==5){
if(hasvictim)
- if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*4.5&&/*animation[victim->targetanimation].height!=lowheight&&*/victim->targetanimation!=dodgebackanim&&victim->targetanimation!=rollanim){
+ if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*4.5&&/*animation[victim->animTarget].height!=lowheight&&*/victim->animTarget!=dodgebackanim&&victim->animTarget!=rollanim){
escapednum=0;
- //if(Random()%2){
if(tutoriallevel!=1)victim->DoBloodBig(1.5/victim->armorhigh,225);
- //}
- if(id==0){
- bonus=Slicebonus;
- bonustime=0;
- bonusvalue=10;
- }
+ award_bonus(id, Slicebonus);
if(tutoriallevel!=1){
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- PlaySoundEx( knifeslicesound, samp[knifeslicesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[knifeslicesound], gLoc, vel);
- OPENAL_SetVolume(channels[knifeslicesound], 512);
- OPENAL_SetPaused(channels[knifeslicesound], false);
+ emit_sound_at(knifeslicesound, victim->coords);
}
//victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].velocity+=relative*damagemult*200;
- if(animation[victim->targetanimation].attack&&(victim->aitype!=playercontrolled||victim->targetanimation==knifeslashstartanim)&&(victim->creature==rabbittype||victim->deathbleeding<=0)){
+ if(animation[victim->animTarget].attack&&(victim->aitype!=playercontrolled||victim->animTarget==knifeslashstartanim)&&(victim->creature==rabbittype||victim->deathbleeding<=0)){
if(victim->id != 0 || difficulty==2){
- victim->targetframe=0;
- victim->targetanimation=staggerbackhardanim;
- victim->targetrotation=targetrotation+180;
+ victim->frameTarget=0;
+ victim->animTarget=staggerbackhardanim;
+ victim->targetyaw=targetyaw+180;
victim->target=0;
}
}
victim->highreversaldelay=0;
if(aitype!=playercontrolled)weaponmissdelay=.6;
- if(tutoriallevel!=1)if(bloodtoggle&&!weapons.bloody[weaponids[weaponactive]])weapons.bloody[weaponids[weaponactive]]=1;
- if(tutoriallevel!=1)weapons.blooddrip[weaponids[weaponactive]]+=3;
+ if(tutoriallevel!=1)if(bloodtoggle&&!weapons[weaponids[weaponactive]].bloody)weapons[weaponids[weaponactive]].bloody=1;
+ if(tutoriallevel!=1)weapons[weaponids[weaponactive]].blooddrip+=3;
XYZ footvel,footpoint;
footvel=0;
footpoint=(victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].position+victim->skeleton.joints[victim->skeleton.jointlabels[neck]].position)/2*victim->scale+victim->coords;
}
if(!skeleton.free){
- footpoint=DoRotation((victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].position+victim->skeleton.joints[victim->skeleton.jointlabels[neck]].position)/2,0,victim->rotation,0)*victim->scale+victim->coords;
+ footpoint=DoRotation((victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].position+victim->skeleton.joints[victim->skeleton.jointlabels[neck]].position)/2,0,victim->yaw,0)*victim->scale+victim->coords;
}
if(tutoriallevel!=1){
if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .6, .3);
victim->DoDamage(damagemult*0);
}
}
- if(targetanimation==swordslashanim&&animation[targetanimation].label[currentframe]==5&&victim->targetanimation!=rollanim){
- if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*6.5&&victim->targetanimation!=dodgebackanim){
+ if(animTarget==swordslashanim&&animation[animTarget].label[frameCurrent]==5&&victim->animTarget!=rollanim){
+ if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*6.5&&victim->animTarget!=dodgebackanim){
if(victim->weaponactive==-1||normaldotproduct(victim->facing,victim->coords-coords)>0||(Random()%2==0)){
- if(id==0){
- bonus=Slashbonus;
- bonustime=0;
- bonusvalue=40;
- }
+ award_bonus(id, Slashbonus);
escapednum=0;
if(tutoriallevel!=1){
if(normaldotproduct(victim->facing,victim->coords-coords)<0)victim->DoBloodBig(2/victim->armorhigh,190);
else victim->DoBloodBig(2/victim->armorhigh,185);
victim->deathbleeding=1;
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- PlaySoundEx( swordslicesound, samp[swordslicesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[swordslicesound], gLoc, vel);
- OPENAL_SetVolume(channels[swordslicesound], 512);
- OPENAL_SetPaused(channels[swordslicesound], false);
+ emit_sound_at(swordslicesound, victim->coords);
}
//victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].velocity+=relative*damagemult*200;
- //if(animation[victim->targetanimation].attack){
- //if(victim->creature==rabbittype){
if(tutoriallevel!=1){
- victim->targetframe=0;
- victim->targetanimation=staggerbackhardanim;
- victim->targetrotation=targetrotation+180;
+ victim->frameTarget=0;
+ victim->animTarget=staggerbackhardanim;
+ victim->targetyaw=targetyaw+180;
victim->target=0;
}
- //}
- //}
if(tutoriallevel!=1){
- if(bloodtoggle&&!weapons.bloody[weaponids[weaponactive]])weapons.bloody[weaponids[weaponactive]]=1;
- weapons.blooddrip[weaponids[weaponactive]]+=3;
+ if(bloodtoggle&&!weapons[weaponids[weaponactive]].bloody)weapons[weaponids[weaponactive]].bloody=1;
+ weapons[weaponids[weaponactive]].blooddrip+=3;
float bloodlossamount;
bloodlossamount=200+abs((float)(Random()%40))-20;
victim->bloodloss+=bloodlossamount/victim->armorhigh;
- //victim->bloodloss+=100*(6.5-findDistancefast(&coords,&victim->coords));
+ //victim->bloodloss+=100*(6.5-distsq(&coords,&victim->coords));
victim->DoDamage(damagemult*0);
XYZ footvel,footpoint;
footpoint=(victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].position+victim->skeleton.joints[victim->skeleton.jointlabels[neck]].position)/2*victim->scale+victim->coords;
}
if(!skeleton.free){
- footpoint=DoRotation((victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].position+victim->skeleton.joints[victim->skeleton.jointlabels[neck]].position)/2,0,victim->rotation,0)*victim->scale+victim->coords;
+ footpoint=DoRotation((victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].position+victim->skeleton.joints[victim->skeleton.jointlabels[neck]].position)/2,0,victim->yaw,0)*victim->scale+victim->coords;
}
if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3);
footvel=DoRotation(facing,0,90,0)*.8;
}
}
else {
-
-
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
if(victim->weaponactive!=-1){
- if(weapons.type[victim->weaponids[0]]==staff||weapons.type[weaponids[0]]==staff){
- if(weapons.type[victim->weaponids[0]]==staff)weapons.damage[victim->weaponids[0]]+=.2+float(abs(Random()%100)-50)/250;
- if(weapons.type[weaponids[0]]==staff)weapons.damage[weaponids[0]]+=.2+float(abs(Random()%100)-50)/250;
-
- PlaySoundEx( swordstaffsound, samp[swordstaffsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[swordstaffsound], gLoc, vel);
- OPENAL_SetVolume(channels[swordstaffsound], 512);
- OPENAL_SetPaused(channels[swordstaffsound], false);
+ if(weapons[victim->weaponids[0]].getType()==staff||weapons[weaponids[0]].getType()==staff){
+ if(weapons[victim->weaponids[0]].getType()==staff)weapons[victim->weaponids[0]].damage+=.2+float(abs(Random()%100)-50)/250;
+ if(weapons[weaponids[0]].getType()==staff)weapons[weaponids[0]].damage+=.2+float(abs(Random()%100)-50)/250;
+
+ emit_sound_at(swordstaffsound, victim->coords);
}
else{
- PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
- OPENAL_SetVolume(channels[metalhitsound], 512);
- OPENAL_SetPaused(channels[metalhitsound], false);
+ emit_sound_at(metalhitsound, victim->coords);
}
}
XYZ aim;
victim->Puff(righthand);
victim->target=0;
- victim->targetframe=0;
- victim->targetanimation=staggerbackhighanim;
- victim->targetrotation=targetrotation+180;
+ victim->frameTarget=0;
+ victim->animTarget=staggerbackhighanim;
+ victim->targetyaw=targetyaw+180;
victim->target=0;
- weapons.owner[victim->weaponids[0]]=-1;
+ weapons[victim->weaponids[0]].owner=-1;
aim=DoRotation(facing,0,90,0)*21;
aim.y+=7;
- weapons.velocity[victim->weaponids[0]]=aim*-.2;
- weapons.tipvelocity[victim->weaponids[0]]=aim;
- weapons.missed[victim->weaponids[0]]=1;
- weapons.hitsomething[weaponids[0]]=0;
- weapons.freetime[victim->weaponids[0]]=0;
- weapons.firstfree[victim->weaponids[0]]=1;
- weapons.physics[victim->weaponids[0]]=1;
+ weapons[victim->weaponids[0]].velocity=aim*-.2;
+ weapons[victim->weaponids[0]].tipvelocity=aim;
+ weapons[victim->weaponids[0]].missed=1;
+ weapons[weaponids[0]].hitsomething=0;
+ weapons[victim->weaponids[0]].freetime=0;
+ weapons[victim->weaponids[0]].firstfree=1;
+ weapons[victim->weaponids[0]].physics=1;
victim->num_weapons--;
if(victim->num_weapons){
victim->weaponids[0]=victim->weaponids[num_weapons];
player[i].wentforweapon=0;
}
- /*PlaySoundEx( metalhitsound, samp[metalhitsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[metalhitsound], gLoc, vel);
- OPENAL_SetVolume(channels[metalhitsound], 512);
- OPENAL_SetPaused(channels[metalhitsound], false);*/
-
}
}
}
- if(targetanimation==staffhitanim&&animation[targetanimation].label[currentframe]==5&&victim->targetanimation!=rollanim){
- if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*6.5&&victim->targetanimation!=dodgebackanim&&victim->targetanimation!=sweepanim){
+ if(animTarget==staffhitanim&&animation[animTarget].label[frameCurrent]==5&&victim->animTarget!=rollanim){
+ if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*6.5&&victim->animTarget!=dodgebackanim&&victim->animTarget!=sweepanim){
if(tutoriallevel!=1){
- weapons.damage[weaponids[0]]+=.4+float(abs(Random()%100)-50)/250;
+ weapons[weaponids[0]].damage+=.4+float(abs(Random()%100)-50)/250;
escapednum=0;
if(id==0)camerashake+=.4;
if(Random()%2||creature==wolftype){
victim->spurt=1;
}
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- PlaySoundEx( staffheadsound, samp[staffheadsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[staffheadsound], gLoc, vel);
- OPENAL_SetVolume(channels[staffheadsound], 256);
- OPENAL_SetPaused(channels[staffheadsound], false);
+ emit_sound_at(staffheadsound, victim->coords);
}
victim->RagDoll(0);
XYZ relative;
if(tutoriallevel!=1){
victim->DoDamage(damagemult*120/victim->protectionhigh);
- if(id==0){
- bonus=solidhit;
- bonustime=0;
- bonusvalue=30;
- }
+ award_bonus(id, solidhit, 30);
}
}
}
- if(targetanimation==staffspinhitanim&&animation[targetanimation].label[currentframe]==5&&victim->targetanimation!=rollanim){
- if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*6.5&&victim->targetanimation!=dodgebackanim&&victim->targetanimation!=sweepanim){
+ if(animTarget==staffspinhitanim&&animation[animTarget].label[frameCurrent]==5&&victim->animTarget!=rollanim){
+ if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*6.5&&victim->animTarget!=dodgebackanim&&victim->animTarget!=sweepanim){
if(tutoriallevel!=1){
- weapons.damage[weaponids[0]]+=.6+float(abs(Random()%100)-50)/250;
+ weapons[weaponids[0]].damage+=.6+float(abs(Random()%100)-50)/250;
escapednum=0;
if(id==0)camerashake+=.4;
if(Random()%2||creature==wolftype){
victim->spurt=1;
}
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- PlaySoundEx( staffheadsound, samp[staffheadsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[staffheadsound], gLoc, vel);
- OPENAL_SetVolume(channels[staffheadsound], 256);
- OPENAL_SetPaused(channels[staffheadsound], false);
+ emit_sound_at(staffheadsound, victim->coords);
}
victim->RagDoll(0);
XYZ relative;
victim->Puff(head);
if(tutoriallevel!=1){victim->DoDamage(damagemult*350/victim->protectionhead);
- if(id==0){
- bonus=solidhit;
- bonustime=0;
- bonusvalue=60;
- }
+ award_bonus(id, solidhit, 60);
}
}
}
- if(targetanimation==staffgroundsmashanim&&animation[targetanimation].label[currentframe]==5){
- if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*6.5){
+ if(animTarget==staffgroundsmashanim&&animation[animTarget].label[frameCurrent]==5){
+ if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*6.5){
escapednum=0;
if(tutoriallevel!=1){
- if(!victim->dead)weapons.damage[weaponids[0]]+=.4+float(abs(Random()%100)-50)/500;
+ if(!victim->dead)weapons[weaponids[0]].damage+=.4+float(abs(Random()%100)-50)/500;
if(id==0)camerashake+=.4;
if(Random()%2||creature==wolftype){
victim->spurt=1;
}
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- PlaySoundEx( staffbodysound, samp[staffbodysound], NULL, true);
- OPENAL_3D_SetAttributes(channels[staffbodysound], gLoc, vel);
- OPENAL_SetVolume(channels[staffbodysound], 256);
- OPENAL_SetPaused(channels[staffbodysound], false);
+ emit_sound_at(staffbodysound, victim->coords);
}
victim->skeleton.longdead=0;
victim->skeleton.free=1;
if(tutoriallevel!=1){victim->DoDamage(damagemult*100/victim->protectionhigh);
if(!victim->dead){
- if(id==0){
- bonus=solidhit;
- bonustime=0;
- bonusvalue=40;
- }
+ award_bonus(id, solidhit, 40);
}
}
}
}
- if(targetanimation==lowkickanim&&animation[targetanimation].label[currentframe]==5){
- if(findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&animation[victim->targetanimation].height!=highheight){
+ if(animTarget==lowkickanim&&animation[animTarget].label[frameCurrent]==5){
+ if(distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&animation[victim->animTarget].height!=highheight){
escapednum=0;
if(id==0)camerashake+=.4;
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
XYZ relative;
relative=victim->coords-coords;
relative.y=0;
Normalise(&relative);
- if(id==0){
- SolidHitBonus();
- }
+ SolidHitBonus(id);
- if(animation[victim->targetanimation].height==lowheight){
+ if(animation[victim->animTarget].height==lowheight){
if(Random()%2){
victim->spurt=1;
DoBlood(.2,250);
}
victim->skeleton.joints[victim->skeleton.jointlabels[head]].velocity+=relative*damagemult*200;
if(tutoriallevel!=1){
- PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
- OPENAL_SetVolume(channels[heavyimpactsound], 128);
- OPENAL_SetPaused(channels[heavyimpactsound], false);
+ emit_sound_at(heavyimpactsound, victim->coords, 128.);
}
victim->Puff(head);
victim->DoDamage(damagemult*100/victim->protectionhead);
if(victim->howactive==typesleeping)victim->DoDamage(damagemult*150/victim->protectionhead);
if(creature==wolftype){
- PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
- OPENAL_SetVolume(channels[clawslicesound], 128);
- OPENAL_SetPaused(channels[clawslicesound], false);
+ emit_sound_at(clawslicesound, victim->coords, 128.);
victim->spurt=1;
victim->DoBloodBig(2/victim->armorhead,175);
}
victim->skeleton.joints[i].velocity+=relative*damagemult*10;
}
victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].velocity+=relative*damagemult*200;
- victim->targetframe=0;
- victim->targetanimation=staggerbackhighanim;
- victim->targetrotation=targetrotation+180;
+ victim->frameTarget=0;
+ victim->animTarget=staggerbackhighanim;
+ victim->targetyaw=targetyaw+180;
victim->target=0;
if(tutoriallevel!=1){
- PlaySoundEx( landsound2, samp[landsound2], NULL, true);
- OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel);
- OPENAL_SetVolume(channels[landsound2], 128);
- OPENAL_SetPaused(channels[landsound2], false);
+ emit_sound_at(landsound2, victim->coords, 128.);
}
victim->Puff(abdomen);
victim->DoDamage(damagemult*30/victim->protectionhigh);
if(creature==wolftype){
- PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
- OPENAL_SetVolume(channels[clawslicesound], 128);
- OPENAL_SetPaused(channels[clawslicesound], false);
+ emit_sound_at(clawslicesound, victim->coords, 128.);
victim->spurt=1;
victim->DoBloodBig(2/victim->armorhigh,170);
}
}
}
- if(targetanimation==sweepanim&&animation[targetanimation].label[currentframe]==5){
- if(victim->targetanimation!=jumpupanim&&findDistancefast(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&victim!=this){
+ if(animTarget==sweepanim&&animation[animTarget].label[frameCurrent]==5){
+ if(victim->animTarget!=jumpupanim&&distsq(&coords,&victim->coords)<(scale*5)*(scale*5)*3&&victim!=this){
escapednum=0;
if(id==0)camerashake+=.2;
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
if(tutoriallevel!=1){
- PlaySoundEx( landsound2, samp[landsound2], NULL, true);
- OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel);
- OPENAL_SetVolume(channels[landsound2], 128);
- OPENAL_SetPaused(channels[landsound2], false);
+ emit_sound_at(landsound2, victim->coords, 128.);
}
XYZ relative;
relative=victim->coords-coords;
relative.y=0;
Normalise(&relative);
- if(animation[victim->targetanimation].height==middleheight||animation[victim->currentanimation].height==middleheight||victim->damage>=victim->damagetolerance-40){
+ if(animation[victim->animTarget].height==middleheight||animation[victim->animCurrent].height==middleheight||victim->damage>=victim->damagetolerance-40){
victim->RagDoll(0);
for(i=0;i<victim->skeleton.num_joints;i++){
victim->skeleton.joints[i].velocity+=relative*damagemult*80;
}
victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].velocity+=relative*damagemult*200;
- victim->targetframe=0;
- victim->targetanimation=staggerbackhighanim;
- victim->targetrotation=targetrotation+180;
+ victim->frameTarget=0;
+ victim->animTarget=staggerbackhighanim;
+ victim->targetyaw=targetyaw+180;
victim->target=0;
if(tutoriallevel!=1){
- PlaySoundEx( landsound2, samp[landsound2], NULL, true);
- OPENAL_3D_SetAttributes(channels[landsound2], gLoc, vel);
- OPENAL_SetVolume(channels[landsound2], 128);
- OPENAL_SetPaused(channels[landsound2], false);
+ emit_sound_at(landsound2, victim->coords, 128.);
}
victim->Puff(abdomen);
victim->DoDamage(damagemult*30/victim->protectionlow);
}
- if(id==0){
- SolidHitBonus();
- }
+ SolidHitBonus(id);
}
}
}
- if(animation[targetanimation].attack==reversal&&(!victim->feint||(victim->lastattack==victim->lastattack2&&victim->lastattack2==victim->lastattack3&&Random()%2)||targetanimation==knifefollowanim)){
- if(targetanimation==spinkickreversalanim&&animation[targetanimation].label[currentframe]==7){
+ if(animation[animTarget].attack==reversal&&(!victim->feint||(victim->lastattack==victim->lastattack2&&victim->lastattack2==victim->lastattack3&&Random()%2)||animTarget==knifefollowanim)){
+ if(animTarget==spinkickreversalanim&&animation[animTarget].label[frameCurrent]==7){
escapednum=0;
if(id==0)camerashake+=.4;
if(Random()%2){
victim->spurt=1;
DoBlood(.2,230);
}
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
if(tutoriallevel!=1){
- PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
- OPENAL_SetVolume(channels[heavyimpactsound], 128);
- OPENAL_SetPaused(channels[heavyimpactsound], false);
+ emit_sound_at(heavyimpactsound, victim->coords, 128.);
}
if(creature==wolftype){
- PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
- OPENAL_SetVolume(channels[clawslicesound], 128);
- OPENAL_SetPaused(channels[clawslicesound], false);
+ emit_sound_at(clawslicesound, victim->coords, 128);
victim->spurt=1;
victim->DoBloodBig(2/victim->armorhigh,170);
}
victim->Puff(abdomen);
victim->DoDamage(damagemult*150/victim->protectionhigh);
- if(id==0){
- bonus=Reversal;
- bonustime=0;
- bonusvalue=60;
- }
+ award_bonus(id, Reversal);
}
- if((targetanimation==swordslashreversalanim||targetanimation==knifeslashreversalanim||targetanimation==staffhitreversalanim||targetanimation==staffspinhitreversalanim)&&animation[targetanimation].label[currentframe]==5){
+ if((animTarget==swordslashreversalanim||animTarget==knifeslashreversalanim||animTarget==staffhitreversalanim||animTarget==staffspinhitreversalanim)&&animation[animTarget].label[frameCurrent]==5){
if(victim->weaponactive!=-1&&victim->num_weapons>0){
- if(weapons.owner[victim->weaponids[victim->weaponactive]]==victim->id){
- weapons.owner[victim->weaponids[victim->weaponactive]]=id;
+ if(weapons[victim->weaponids[victim->weaponactive]].owner==victim->id){
+ weapons[victim->weaponids[victim->weaponactive]].owner=id;
weaponactive=0;
if(num_weapons>0){
weaponids[num_weapons]=weaponids[victim->weaponactive];
}
}
- if(targetanimation==staffhitreversalanim&&animation[targetanimation].label[currentframe]==5){
+ if(animTarget==staffhitreversalanim&&animation[animTarget].label[frameCurrent]==5){
escapednum=0;
if(id==0)camerashake+=.4;
if(Random()%2){
victim->spurt=1;
DoBlood(.2,230);
}
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- PlaySoundEx( whooshhitsound, samp[whooshhitsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[whooshhitsound], gLoc, vel);
- OPENAL_SetVolume(channels[whooshhitsound], 128);
- OPENAL_SetPaused(channels[whooshhitsound], false);
+ emit_sound_at(whooshhitsound, victim->coords, 128.);
victim->RagDoll(0);
XYZ relative;
relative=victim->coords-oldcoords;
victim->DoDamage(damagemult*70/victim->protectionhigh);
}
- if(targetanimation==staffspinhitreversalanim&&animation[targetanimation].label[currentframe]==7){
+ if(animTarget==staffspinhitreversalanim&&animation[animTarget].label[frameCurrent]==7){
escapednum=0;
if(id==0)camerashake+=.4;
if(Random()%2){
victim->spurt=1;
DoBlood(.2,230);
}
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- if(id==0){
- bonus=staffreversebonus;
- bonustime=0;
- bonusvalue=100;
- }
+ award_bonus(id, staffreversebonus);
if(tutoriallevel!=1){
- PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
- OPENAL_SetVolume(channels[heavyimpactsound], 128);
- OPENAL_SetPaused(channels[heavyimpactsound], false);
+ emit_sound_at(heavyimpactsound, victim->coords, 128.);
}
victim->RagDoll(0);
- if(id==0){
- bonus=staffreversebonus;
- bonustime=0;
- bonusvalue=100;
- }
+ award_bonus(id, staffreversebonus); // Huh, again?
XYZ relative;
relative=victim->coords-oldcoords;
victim->DoDamage(damagemult*70/victim->protectionhigh);
}
- if(targetanimation==upunchreversalanim&&animation[targetanimation].label[currentframe]==7){
+ if(animTarget==upunchreversalanim&&animation[animTarget].label[frameCurrent]==7){
escapednum=0;
victim->RagDoll(1);
XYZ relative;
victim->Puff(abdomen);
victim->DoDamage(damagemult*90/victim->protectionhigh);
- if(id==0){
- bonus=Reversal;
- bonustime=0;
- bonusvalue=60;
- }
+ award_bonus(id, Reversal);
bool doslice;
doslice=0;
if(weaponactive!=-1||creature==wolftype)doslice=1;
- if(creature==rabbittype&&weaponactive!=-1)if(weapons.type[weaponids[0]]==staff)doslice=0;
+ if(creature==rabbittype&&weaponactive!=-1)if(weapons[weaponids[0]].getType()==staff)doslice=0;
if(doslice){
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
if(weaponactive!=-1){
victim->DoBloodBig(2/victim->armorhigh,225);
- PlaySoundEx( knifeslicesound, samp[knifeslicesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[knifeslicesound], gLoc, vel);
- OPENAL_SetVolume(channels[knifeslicesound], 512);
- OPENAL_SetPaused(channels[knifeslicesound], false);
- if(bloodtoggle&&!weapons.bloody[weaponids[weaponactive]])weapons.bloody[weaponids[weaponactive]]=1;
- weapons.blooddrip[weaponids[weaponactive]]+=3;
+ emit_sound_at(knifeslicesound, victim->coords);
+ if(bloodtoggle&&!weapons[weaponids[weaponactive]].bloody)weapons[weaponids[weaponactive]].bloody=1;
+ weapons[weaponids[weaponactive]].blooddrip+=3;
}
- if(weaponactive==-1&&creature==wolftype){
- PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
- OPENAL_SetVolume(channels[clawslicesound], 128);
- OPENAL_SetPaused(channels[clawslicesound], false);
+ if(weaponactive==-1&&creature==wolftype){;
+ emit_sound_at(clawslicesound, victim->coords, 128.);
victim->spurt=1;
victim->DoBloodBig(2/victim->armorhigh,175);
}
- if(targetanimation==swordslashreversalanim&&animation[targetanimation].label[currentframe]==7){
+ if(animTarget==swordslashreversalanim&&animation[animTarget].label[frameCurrent]==7){
escapednum=0;
victim->RagDoll(1);
XYZ relative;
victim->skeleton.joints[victim->skeleton.jointlabels[rightelbow]].velocity*=.5-1;
victim->skeleton.joints[victim->skeleton.jointlabels[rightshoulder]].velocity*=.7-1;
- if(id==0){
- bonus=swordreversebonus;
- bonustime=0;
- bonusvalue=100;
- }
- //victim->DoDamage(90);
-
- /*if(weaponactive!=-1){
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- victim->DoBloodBig(2,225);
- PlaySoundEx( knifeslicesound, samp[knifeslicesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[knifeslicesound], gLoc, vel);
- OPENAL_SetVolume(channels[knifeslicesound], 512);
- OPENAL_SetPaused(channels[knifeslicesound], false);
- if(bloodtoggle&&!weapons.bloody[weaponids[weaponactive]])weapons.bloody[weaponids[weaponactive]]=1;
- weapons.blooddrip[weaponids[weaponactive]]+=3;
- }*/
+ award_bonus(id, swordreversebonus);
}
- if(hasvictim&&targetanimation==knifeslashreversalanim&&animation[targetanimation].label[currentframe]==7){
+ if(hasvictim&&animTarget==knifeslashreversalanim&&animation[animTarget].label[frameCurrent]==7){
escapednum=0;
if(id==0)camerashake+=.4;
if(Random()%2){
victim->spurt=1;
DoBlood(.2,230);
}
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
if(tutoriallevel!=1){
- PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
- OPENAL_SetVolume(channels[heavyimpactsound], 128);
- OPENAL_SetPaused(channels[heavyimpactsound], false);
+ emit_sound_at(heavyimpactsound, victim->coords, 128.);
}
victim->RagDoll(0);
XYZ relative;
victim->Puff(abdomen);
victim->DoDamage(damagemult*30/victim->protectionhigh);
- if(id==0){
- bonus=Reversal;
- bonustime=0;
- bonusvalue=60;
- }
+ award_bonus(id, Reversal);
}
- if(hasvictim&&targetanimation==sneakattackanim&&animation[targetanimation].label[currentframe]==7){
+ if(hasvictim&&animTarget==sneakattackanim&&animation[animTarget].label[frameCurrent]==7){
escapednum=0;
victim->RagDoll(0);
victim->skeleton.spinny=0;
bool doslice;
doslice=0;
if(weaponactive!=-1||creature==wolftype)doslice=1;
- if(creature==rabbittype&&weaponactive!=-1)if(weapons.type[weaponids[0]]==staff)doslice=0;
+ if(creature==rabbittype&&weaponactive!=-1)if(weapons[weaponids[0]].getType()==staff)doslice=0;
if(doslice){
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
if(weaponactive!=-1){
victim->DoBloodBig(200,225);
- PlaySoundEx( knifeslicesound, samp[knifeslicesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[knifeslicesound], gLoc, vel);
- OPENAL_SetVolume(channels[knifeslicesound], 512);
- OPENAL_SetPaused(channels[knifeslicesound], false);
- if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2;
- weapons.blooddrip[weaponids[weaponactive]]+=5;
+ emit_sound_at(knifeslicesound, victim->coords);
+ if(bloodtoggle)weapons[weaponids[weaponactive]].bloody=2;
+ weapons[weaponids[weaponactive]].blooddrip+=5;
}
if(creature==wolftype&&weaponactive==-1){
- PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
- OPENAL_SetVolume(channels[clawslicesound], 128);
- OPENAL_SetPaused(channels[clawslicesound], false);
+ emit_sound_at(clawslicesound, victim->coords, 128.);
victim->spurt=1;
victim->DoBloodBig(2,175);
}
}
- if(id==0){
- bonus=spinecrusher;
- bonustime=0;
- bonusvalue=100;
- }
+ award_bonus(id, spinecrusher);
}
- if(hasvictim&&(targetanimation==knifefollowanim||targetanimation==knifesneakattackanim)&&animation[targetanimation].label[currentframe]==5){
+ if(hasvictim&&(animTarget==knifefollowanim||animTarget==knifesneakattackanim)&&animation[animTarget].label[frameCurrent]==5){
if(weaponactive!=-1&&victim->bloodloss<victim->damagetolerance){
escapednum=0;
- if(targetanimation==knifefollowanim)victim->DoBloodBig(200,210);
- if(targetanimation==knifesneakattackanim){
+ if(animTarget==knifefollowanim)victim->DoBloodBig(200,210);
+ if(animTarget==knifesneakattackanim){
/*victim->DoBloodBig(200,195);
XYZ bloodvel;
bloodvel=0;
bloodvel.z=20;
bloodvel.y=5;
- bloodvel=DoRotation(bloodvel,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale;
- Sprite::MakeSprite(bloodsprite, DoRotation(skeleton.joints[skeleton.jointlabels[neck]].position,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1);
+ bloodvel=DoRotation(bloodvel,((float)(Random()%100))/4,yaw+((float)(Random()%100))/4,0)*scale;
+ Sprite::MakeSprite(bloodsprite, DoRotation(skeleton.joints[skeleton.jointlabels[neck]].position,0,yaw,0)*scale+coords,bloodvel, 1,1,1, .05, 1);
*/
XYZ footvel,footpoint;
footvel=0;
- footpoint=weapons.tippoint[weaponids[0]];
+ footpoint=weapons[weaponids[0]].tippoint;
if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3);
- footvel=(weapons.tippoint[weaponids[0]]-weapons.position[weaponids[0]]);
+ footvel=(weapons[weaponids[0]].tippoint-weapons[weaponids[0]].position);
Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .3, 1);
Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*2, 1,1,1, .3, 1);
victim->DoBloodBig(200,195);
- if(id==0){
- bonus=tracheotomy;
- bonustime=0;
- bonusvalue=100;
- }
-
- //victim->neckspurtamount=5;
+ award_bonus(id, tracheotomy);
}
- if(targetanimation==knifefollowanim){
- if(id==0){
- bonus=Stabbonus;
- bonustime=0;
- bonusvalue=40;
- }
+ if(animTarget==knifefollowanim){
+ award_bonus(id, Stabbonus);
XYZ footvel,footpoint;
footvel=0;
- footpoint=weapons.tippoint[weaponids[0]];
+ footpoint=weapons[weaponids[0]].tippoint;
if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3);
- footvel=(weapons.tippoint[weaponids[0]]-weapons.position[weaponids[0]])*-1;
+ footvel=(weapons[weaponids[0]].tippoint-weapons[weaponids[0]].position)*-1;
Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .2, 1);
}
victim->bloodloss+=10000;
victim->velocity=0;
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- PlaySoundEx( fleshstabsound, samp[fleshstabsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[fleshstabsound], gLoc, vel);
- OPENAL_SetVolume(channels[fleshstabsound], 512);
- OPENAL_SetPaused(channels[fleshstabsound], false);
- if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2;
- weapons.blooddrip[weaponids[weaponactive]]+=5;
+ emit_sound_at(fleshstabsound, victim->coords);
+ if(bloodtoggle)weapons[weaponids[weaponactive]].bloody=2;
+ weapons[weaponids[weaponactive]].blooddrip+=5;
}
}
- if(hasvictim&&(targetanimation==knifefollowanim||targetanimation==knifesneakattackanim)&&animation[targetanimation].label[currentframe]==6){
+ if(hasvictim&&(animTarget==knifefollowanim||animTarget==knifesneakattackanim)&&animation[animTarget].label[frameCurrent]==6){
escapednum=0;
victim->velocity=0;
for(i=0;i<victim->skeleton.num_joints;i++){
victim->skeleton.joints[i].velocity=0;
}
- if(targetanimation==knifefollowanim){
+ if(animTarget==knifefollowanim){
victim->RagDoll(0);
for(i=0;i<victim->skeleton.num_joints;i++){
victim->skeleton.joints[i].velocity=0;
}
}
- if(weaponactive!=-1&&animation[victim->targetanimation].attack!=reversal){
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- PlaySoundEx( fleshstabremovesound, samp[fleshstabremovesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel);
- OPENAL_SetVolume(channels[fleshstabremovesound], 512);
- OPENAL_SetPaused(channels[fleshstabremovesound], false);
- if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2;
- weapons.blooddrip[weaponids[weaponactive]]+=5;
+ if(weaponactive!=-1&&animation[victim->animTarget].attack!=reversal){
+ emit_sound_at(fleshstabremovesound, victim->coords);
+ if(bloodtoggle)weapons[weaponids[weaponactive]].bloody=2;
+ weapons[weaponids[weaponactive]].blooddrip+=5;
XYZ footvel,footpoint;
footvel=0;
- footpoint=weapons.tippoint[weaponids[0]];
+ footpoint=weapons[weaponids[0]].tippoint;
if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3);
- footvel=(weapons.tippoint[weaponids[0]]-weapons.position[weaponids[0]])*-1;
+ footvel=(weapons[weaponids[0]].tippoint-weapons[weaponids[0]].position)*-1;
Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .3, 1);
}
}
- if(hasvictim&&(targetanimation==swordsneakattackanim)&&animation[targetanimation].label[currentframe]==5){
+ if(hasvictim&&(animTarget==swordsneakattackanim)&&animation[animTarget].label[frameCurrent]==5){
if(weaponactive!=-1&&victim->bloodloss<victim->damagetolerance){
- if(id==0){
- bonus=backstab;
- bonustime=0;
- bonusvalue=100;
- }
+ award_bonus(id, backstab);
escapednum=0;
XYZ footvel,footpoint;
footvel=0;
- footpoint=(weapons.tippoint[weaponids[0]]+weapons.position[weaponids[0]])/2;
+ footpoint=(weapons[weaponids[0]].tippoint+weapons[weaponids[0]].position)/2;
if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3);
- footvel=(weapons.tippoint[weaponids[0]]-weapons.position[weaponids[0]]);
+ footvel=(weapons[weaponids[0]].tippoint-weapons[weaponids[0]].position);
Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
Sprite::MakeSprite(bloodflamesprite, footpoint,DoRotation(footvel*5,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .3, 1);
victim->DoBloodBig(200,215);
victim->bloodloss+=10000;
victim->velocity=0;
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- PlaySoundEx( fleshstabsound, samp[fleshstabsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[fleshstabsound], gLoc, vel);
- OPENAL_SetVolume(channels[fleshstabsound], 512);
- OPENAL_SetPaused(channels[fleshstabsound], false);
- if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2;
- weapons.blooddrip[weaponids[weaponactive]]+=5;
+ emit_sound_at(fleshstabsound, victim->coords);
+ if(bloodtoggle)weapons[weaponids[weaponactive]].bloody=2;
+ weapons[weaponids[weaponactive]].blooddrip+=5;
}
}
- if(hasvictim&&targetanimation==swordsneakattackanim&&animation[targetanimation].label[currentframe]==6){
+ if(hasvictim&&animTarget==swordsneakattackanim&&animation[animTarget].label[frameCurrent]==6){
escapednum=0;
victim->velocity=0;
for(i=0;i<victim->skeleton.num_joints;i++){
victim->skeleton.joints[i].velocity=0;
}
if(weaponactive!=-1){
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- PlaySoundEx( fleshstabremovesound, samp[fleshstabremovesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel);
- OPENAL_SetVolume(channels[fleshstabremovesound], 512);
- OPENAL_SetPaused(channels[fleshstabremovesound], false);
- if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2;
- weapons.blooddrip[weaponids[weaponactive]]+=5;
+ emit_sound_at(fleshstabremovesound, victim->coords);
+ if(bloodtoggle)weapons[weaponids[weaponactive]].bloody=2;
+ weapons[weaponids[weaponactive]].blooddrip+=5;
XYZ footvel,footpoint;
footvel=0;
- footpoint=weapons.tippoint[weaponids[0]];
+ footpoint=weapons[weaponids[0]].tippoint;
if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3);
- footvel=(weapons.tippoint[weaponids[0]]-weapons.position[weaponids[0]])*-1;
+ footvel=(weapons[weaponids[0]].tippoint-weapons[weaponids[0]].position)*-1;
Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .3, 1);
}
}
- if(targetanimation==sweepreversalanim&&animation[targetanimation].label[currentframe]==7){
+ if(animTarget==sweepreversalanim&&animation[animTarget].label[frameCurrent]==7){
escapednum=0;
if(id==0)camerashake+=.4;
if(Random()%2){
victim->spurt=1;
DoBlood(.2,240);
}
- float gLoc[3];
- float vel[3];
- gLoc[0]=victim->coords.x;
- gLoc[1]=victim->coords.y;
- gLoc[2]=victim->coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
if(weaponactive==-1){
if(tutoriallevel!=1){
- PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel);
- OPENAL_SetVolume(channels[heavyimpactsound], 128);
- OPENAL_SetPaused(channels[heavyimpactsound], false);
+ emit_sound_at(heavyimpactsound, victim->coords, 128.);
}
}
bool doslice;
doslice=0;
if(weaponactive!=-1||creature==wolftype)doslice=1;
- if(creature==rabbittype&&weaponactive!=-1)if(weapons.type[weaponids[0]]==staff)doslice=0;
+ if(creature==rabbittype&&weaponactive!=-1)if(weapons[weaponids[0]].getType()==staff)doslice=0;
if(doslice){
if(weaponactive!=-1){
victim->DoBloodBig(2/victim->armorhead,225);
- PlaySoundEx( knifeslicesound, samp[knifeslicesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[knifeslicesound], gLoc, vel);
- OPENAL_SetVolume(channels[knifeslicesound], 512);
- OPENAL_SetPaused(channels[knifeslicesound], false);
- if(bloodtoggle&&!weapons.bloody[weaponids[weaponactive]])weapons.bloody[weaponids[weaponactive]]=1;
- weapons.blooddrip[weaponids[weaponactive]]+=3;
+ emit_sound_at(knifeslicesound, victim->coords);
+ if(bloodtoggle&&!weapons[weaponids[weaponactive]].bloody)weapons[weaponids[weaponactive]].bloody=1;
+ weapons[weaponids[weaponactive]].blooddrip+=3;
}
if(weaponactive==-1&&creature==wolftype){
- PlaySoundEx( clawslicesound, samp[clawslicesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[clawslicesound], gLoc, vel);
- OPENAL_SetVolume(channels[clawslicesound], 128);
- OPENAL_SetPaused(channels[clawslicesound], false);
+ emit_sound_at(clawslicesound, victim->coords, 128.);
victim->spurt=1;
victim->DoBloodBig(2/victim->armorhead,175);
}
}
- if(id==0){
- bonus=Reversal;
- bonustime=0;
- bonusvalue=60;
- }
+ award_bonus(id, Reversal);
victim->Puff(neck);
victim->velocity=0;
}
- if(targetanimation==sweepreversalanim&&((animation[targetanimation].label[currentframe]==9&&victim->damage<victim->damagetolerance)||(animation[targetanimation].label[currentframe]==7&&victim->damage>victim->damagetolerance))){
+ if(animTarget==sweepreversalanim&&((animation[animTarget].label[frameCurrent]==9&&victim->damage<victim->damagetolerance)||(animation[animTarget].label[frameCurrent]==7&&victim->damage>victim->damagetolerance))){
escapednum=0;
victim->RagDoll(0);
XYZ relative;
victim->skeleton.joints[victim->skeleton.jointlabels[head]].velocity+=relative*damagemult*200;
}
- if(hasvictim&&(targetanimation==spinkickreversalanim||targetanimation==sweepreversalanim||targetanimation==rabbitkickreversalanim||targetanimation==upunchreversalanim||targetanimation==jumpreversalanim||targetanimation==swordslashreversalanim||targetanimation==knifeslashreversalanim||targetanimation==rabbittacklereversal||targetanimation==wolftacklereversal||targetanimation==staffhitreversalanim||targetanimation==staffspinhitreversalanim))
+ if(hasvictim&&(animTarget==spinkickreversalanim||animTarget==sweepreversalanim||animTarget==rabbitkickreversalanim||animTarget==upunchreversalanim||animTarget==jumpreversalanim||animTarget==swordslashreversalanim||animTarget==knifeslashreversalanim||animTarget==rabbittacklereversal||animTarget==wolftacklereversal||animTarget==staffhitreversalanim||animTarget==staffspinhitreversalanim))
if(victim->damage>victim->damagetolerance&&bonus!=reverseko){
- if(id==0){
- bonus=reverseko;
- bonustime=0;
- bonusvalue=100;
- }
+ award_bonus(id, reverseko);
}
}
//Animation end
- if(targetframe>animation[currentanimation].numframes-1){
- targetframe=0;
+ if(frameTarget>animation[animCurrent].numframes-1){
+ frameTarget=0;
if(wasStop()){
- targetanimation=getIdle();
+ animTarget=getIdle();
FootLand(0,1);
FootLand(1,1);
}
- if(currentanimation==rabbittackleanim||currentanimation==rabbittacklinganim){
- targetanimation=rollanim;
- targetframe=3;
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
-
- PlaySoundEx( movewhooshsound, samp[movewhooshsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[movewhooshsound], gLoc, vel);
- OPENAL_SetVolume(channels[movewhooshsound], 128);
- OPENAL_SetPaused(channels[movewhooshsound], false);
+ if(animCurrent==rabbittackleanim||animCurrent==rabbittacklinganim){
+ animTarget=rollanim;
+ frameTarget=3;
+ emit_sound_at(movewhooshsound, coords, 128.);
}
- if(currentanimation==staggerbackhighanim){
- targetanimation=getIdle();
+ if(animCurrent==staggerbackhighanim){
+ animTarget=getIdle();
}
- if(currentanimation==staggerbackhardanim){
- targetanimation=getIdle();
+ if(animCurrent==staggerbackhardanim){
+ animTarget=getIdle();
}
- if(currentanimation==removeknifeanim){
- targetanimation=getIdle();
+ if(animCurrent==removeknifeanim){
+ animTarget=getIdle();
}
- if(currentanimation==crouchremoveknifeanim){
- targetanimation=getCrouch();
+ if(animCurrent==crouchremoveknifeanim){
+ animTarget=getCrouch();
}
- if(currentanimation==backhandspringanim){
- targetanimation=getIdle();
+ if(animCurrent==backhandspringanim){
+ animTarget=getIdle();
}
- if(currentanimation==dodgebackanim){
- targetanimation=getIdle();
+ if(animCurrent==dodgebackanim){
+ animTarget=getIdle();
}
- if(currentanimation==drawleftanim){
- targetanimation=getIdle();
+ if(animCurrent==drawleftanim){
+ animTarget=getIdle();
}
- if(currentanimation==drawrightanim||currentanimation==crouchdrawrightanim){
- targetanimation=getIdle();
- if(currentanimation==crouchdrawrightanim){
- targetanimation=getCrouch();
+ if(animCurrent==drawrightanim||animCurrent==crouchdrawrightanim){
+ animTarget=getIdle();
+ if(animCurrent==crouchdrawrightanim){
+ animTarget=getCrouch();
}
if(weaponactive==-1)weaponactive=0;
else if(weaponactive==0){
}
if(weaponactive==-1){
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
-
- PlaySoundEx( knifesheathesound, samp[knifesheathesound], NULL, true);
- OPENAL_3D_SetAttributes(channels[knifesheathesound], gLoc, vel);
- OPENAL_SetVolume(channels[knifesheathesound], 128);
- OPENAL_SetPaused(channels[knifesheathesound], false);
+ emit_sound_at(knifesheathesound, coords, 128.);
}
if(weaponactive!=-1){
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
-
- PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel);
- OPENAL_SetVolume(channels[knifedrawsound], 128);
- OPENAL_SetPaused(channels[knifedrawsound], false);
+ emit_sound_at(knifedrawsound, coords, 128.);
}
}
- if(currentanimation==rollanim){
- targetanimation=getCrouch();
+ if(animCurrent==rollanim){
+ animTarget=getCrouch();
FootLand(0,1);
FootLand(1,1);
}
if(isFlip()){
- if(targetanimation==walljumprightkickanim){
+ if(animTarget==walljumprightkickanim){
targetrot=-190;
}
- if(targetanimation==walljumpleftkickanim){
+ if(animTarget==walljumpleftkickanim){
targetrot=190;
}
- targetanimation=jumpdownanim;
+ animTarget=jumpdownanim;
}
- if(currentanimation==climbanim){
- targetanimation=getCrouch();
- targetframe=1;
+ if(animCurrent==climbanim){
+ animTarget=getCrouch();
+ frameTarget=1;
coords+=facing*.1;
if(!isnormal(coords.x))
coords=oldcoords;
collided=0;
avoidcollided=0;
}
- if(targetanimation==rabbitkickreversalanim){
- targetanimation=getCrouch();
+ if(animTarget==rabbitkickreversalanim){
+ animTarget=getCrouch();
lastfeint=0;
}
- if(targetanimation==jumpreversalanim){
- targetanimation=getCrouch();
+ if(animTarget==jumpreversalanim){
+ animTarget=getCrouch();
lastfeint=0;
}
- if(targetanimation==walljumprightanim||targetanimation==walljumpbackanim||targetanimation==walljumpfrontanim){
- if(attackkeydown&&targetanimation!=walljumpfrontanim){
+ if(animTarget==walljumprightanim||animTarget==walljumpbackanim||animTarget==walljumpfrontanim){
+ if(attackkeydown&&animTarget!=walljumpfrontanim){
int closest=-1;
float closestdist=-1;
float distance;
if(numplayers>1)
for(i=0;i<numplayers;i++){
if(id!=i&&player[i].coords.y<coords.y&&!player[i].skeleton.free){
- distance=findDistancefast(&player[i].coords,&coords);
+ distance=distsq(&player[i].coords,&coords);
if(closestdist==-1||distance<closestdist){
closestdist=distance;
closest=i;
}
if(closestdist>0&&closest>=0&&closestdist<16){
victim=&player[closest];
- targetanimation=walljumprightkickanim;
- targetframe=0;
+ animTarget=walljumprightkickanim;
+ frameTarget=0;
XYZ rotatetarget=victim->coords-coords;
Normalise(&rotatetarget);
- rotation=-asin(0-rotatetarget.x);
- rotation*=360/6.28;
- if(rotatetarget.z<0)rotation=180-rotation;
+ yaw=-asin(0-rotatetarget.x);
+ yaw*=360/6.28;
+ if(rotatetarget.z<0)yaw=180-yaw;
targettilt2=-asin(rotatetarget.y)*360/6.28;
velocity=(victim->coords-coords)*4;
velocity.y+=2;
transspeed=40;
}
}
- if(targetanimation==walljumpbackanim){
- targetanimation=backflipanim;
- targetframe=3;
+ if(animTarget==walljumpbackanim){
+ animTarget=backflipanim;
+ frameTarget=3;
velocity=facing*-8;
velocity.y=4;
- if(id==0)OPENAL_SetPaused(channels[whooshsound], false);
+ if(id==0)
+ resume_stream(whooshsound);
}
- if(targetanimation==walljumprightanim){
- targetanimation=rightflipanim;
- targetframe=4;
- targetrotation-=90;
- rotation-=90;
+ if(animTarget==walljumprightanim){
+ animTarget=rightflipanim;
+ frameTarget=4;
+ targetyaw-=90;
+ yaw-=90;
velocity=DoRotation(facing,0,30,0)*-8;
velocity.y=4;
}
- if(targetanimation==walljumpfrontanim){
- targetanimation=frontflipanim;
- targetframe=2;
- //targetrotation-=180;
- ////rotation-=180;
+ if(animTarget==walljumpfrontanim){
+ animTarget=frontflipanim;
+ frameTarget=2;
+ //targetyaw-=180;
+ ////yaw-=180;
velocity=facing*8;
velocity.y=4;
}
- if(id==0)OPENAL_SetPaused(channels[whooshsound], false);
+ if(id==0)
+ resume_stream(whooshsound);
}
- if(targetanimation==walljumpleftanim){
+ if(animTarget==walljumpleftanim){
if(attackkeydown){
int closest=-1;
float closestdist=-1;
if(numplayers>1)
for(i=0;i<numplayers;i++){
if(id!=i&&player[i].coords.y<coords.y&&!player[i].skeleton.free){
- distance=findDistancefast(&player[i].coords,&coords);
+ distance=distsq(&player[i].coords,&coords);
if(closestdist==-1||distance<closestdist){
closestdist=distance;
closest=i;
}
if(closestdist>0&&closest>=0&&closestdist<16){
victim=&player[closest];
- targetanimation=walljumpleftkickanim;
- targetframe=0;
+ animTarget=walljumpleftkickanim;
+ frameTarget=0;
XYZ rotatetarget=victim->coords-coords;
Normalise(&rotatetarget);
- rotation=-asin(0-rotatetarget.x);
- rotation*=360/6.28;
- if(rotatetarget.z<0)rotation=180-rotation;
+ yaw=-asin(0-rotatetarget.x);
+ yaw*=360/6.28;
+ if(rotatetarget.z<0)yaw=180-yaw;
targettilt2=-asin(rotatetarget.y)*360/6.28;
velocity=(victim->coords-coords)*4;
velocity.y+=2;
transspeed=40;
}
}
- if(targetanimation!=walljumpleftkickanim){
- targetanimation=leftflipanim;
- targetframe=4;
- targetrotation+=90;
- rotation+=90;
+ if(animTarget!=walljumpleftkickanim){
+ animTarget=leftflipanim;
+ frameTarget=4;
+ targetyaw+=90;
+ yaw+=90;
velocity=DoRotation(facing,0,-30,0)*-8;
velocity.y=4;
}
- if(id==0)OPENAL_SetPaused(channels[whooshsound], false);
+ if(id==0)
+ resume_stream(whooshsound);
}
- if(targetanimation==sneakattackanim){
- float ycoords=oldcoords.y;
- currentanimation=getCrouch();
- targetanimation=getCrouch();
- targetframe=1;
- currentframe=0;
- targetrotation+=180;
- rotation+=180;
+ if(animTarget==sneakattackanim){
+ animCurrent=getCrouch();
+ animTarget=getCrouch();
+ frameTarget=1;
+ frameCurrent=0;
+ targetyaw+=180;
+ yaw+=180;
targettilt2*=-1;
tilt2*=-1;
transspeed=1000000;
- targetheadrotation+=180;
+ targetheadyaw+=180;
coords-=facing*.7;
if(onterrain)coords.y=terrain.getHeight(coords.x,coords.z);
lastfeint=0;
}
- if(targetanimation==knifesneakattackanim||targetanimation==swordsneakattackanim){
- float ycoords=oldcoords.y;
- targetanimation=getIdle();
- targetframe=0;
+ if(animTarget==knifesneakattackanim||animTarget==swordsneakattackanim){
+ animTarget=getIdle();
+ frameTarget=0;
if(onterrain)coords.y=terrain.getHeight(coords.x,coords.z);
lastfeint=0;
}
- if(currentanimation==knifefollowanim){
- targetanimation=getIdle();
+ if(animCurrent==knifefollowanim){
+ animTarget=getIdle();
lastfeint=0;
}
- if(animation[targetanimation].attack==reversal&¤tanimation!=sneakattackanim&¤tanimation!=knifesneakattackanim&¤tanimation!=swordsneakattackanim&¤tanimation!=knifefollowanim){
+ if(animation[animTarget].attack==reversal&&animCurrent!=sneakattackanim&&animCurrent!=knifesneakattackanim&&animCurrent!=swordsneakattackanim&&animCurrent!=knifefollowanim){
float ycoords=oldcoords.y;
- targetanimation=getStop();
- targetrotation+=180;
- rotation+=180;
+ animTarget=getStop();
+ targetyaw+=180;
+ yaw+=180;
targettilt2*=-1;
tilt2*=-1;
transspeed=1000000;
- targetheadrotation+=180;
+ targetheadyaw+=180;
if(!isnormal(coords.x))
coords=oldcoords;
- if(currentanimation==spinkickreversalanim||currentanimation==swordslashreversalanim)
+ if(animCurrent==spinkickreversalanim||animCurrent==swordslashreversalanim)
oldcoords=coords+facing*.5;
- else if(currentanimation==sweepreversalanim)
+ else if(animCurrent==sweepreversalanim)
oldcoords=coords+facing*1.1;
- else if(currentanimation==upunchreversalanim){
+ else if(animCurrent==upunchreversalanim){
oldcoords=coords+facing*1.5;
- targetrotation+=180;
- rotation+=180;
- targetheadrotation+=180;
+ targetyaw+=180;
+ yaw+=180;
+ targetheadyaw+=180;
targettilt2*=-1;
tilt2*=-1;
}
- else if(currentanimation==knifeslashreversalanim){
+ else if(animCurrent==knifeslashreversalanim){
oldcoords=coords+facing*.5;
- targetrotation+=90;
- rotation+=90;
- targetheadrotation+=90;
+ targetyaw+=90;
+ yaw+=90;
+ targetheadyaw+=90;
targettilt2=0;
tilt2=0;
}
- else if(currentanimation==staffspinhitreversalanim){
- targetrotation+=180;
- rotation+=180;
- targetheadrotation+=180;
+ else if(animCurrent==staffspinhitreversalanim){
+ targetyaw+=180;
+ yaw+=180;
+ targetheadyaw+=180;
targettilt2=0;
tilt2=0;
}
lastfeint=0;
}
- if(currentanimation==knifesneakattackedanim||currentanimation==swordsneakattackedanim){
+ if(animCurrent==knifesneakattackedanim||animCurrent==swordsneakattackedanim){
velocity=0;
velocity.y=-5;
RagDoll(0);
}
- if(animation[targetanimation].attack==reversed){
+ if(animation[animTarget].attack==reversed){
escapednum++;
- if(targetanimation==sweepreversedanim)targetrotation+=90;
- targetanimation=backhandspringanim;
- targetframe=2;
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- PlaySoundEx( landsound, samp[landsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[landsound], gLoc, vel);
- OPENAL_SetVolume(channels[landsound], 128);
- OPENAL_SetPaused(channels[landsound], false);
-
- if(currentanimation==upunchreversedanim||currentanimation==swordslashreversedanim){
- targetanimation=rollanim;
- targetframe=5;
+ if(animTarget==sweepreversedanim)targetyaw+=90;
+ animTarget=backhandspringanim;
+ frameTarget=2;
+ emit_sound_at(landsound, coords, 128);
+
+ if(animCurrent==upunchreversedanim||animCurrent==swordslashreversedanim){
+ animTarget=rollanim;
+ frameTarget=5;
oldcoords=coords;
- coords+=(DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,rotation,0)+DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,rotation,0))/2*scale;
+ coords+=(DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,yaw,0)+DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,yaw,0))/2*scale;
coords.y=oldcoords.y;
}
- if(currentanimation==knifeslashreversedanim){
- targetanimation=rollanim;
- targetframe=0;
- targetrotation+=90;
- rotation+=90;
+ if(animCurrent==knifeslashreversedanim){
+ animTarget=rollanim;
+ frameTarget=0;
+ targetyaw+=90;
+ yaw+=90;
oldcoords=coords;
- coords+=(DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,rotation,0)+DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,rotation,0))/2*scale;
+ coords+=(DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,yaw,0)+DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,yaw,0))/2*scale;
coords.y=oldcoords.y;
}
}
if(wasFlip()){
- targetanimation=jumpdownanim;
+ animTarget=jumpdownanim;
}
- if(wasLanding())targetanimation=getIdle();
- if(wasLandhard())targetanimation=getIdle();
- if(currentanimation==spinkickanim||currentanimation==getupfrombackanim||currentanimation==getupfromfrontanim||currentanimation==lowkickanim){
- targetanimation=getIdle();
+ if(wasLanding())animTarget=getIdle();
+ if(wasLandhard())animTarget=getIdle();
+ if(animCurrent==spinkickanim||animCurrent==getupfrombackanim||animCurrent==getupfromfrontanim||animCurrent==lowkickanim){
+ animTarget=getIdle();
oldcoords=coords;
- coords+=(DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,rotation,0)+DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,rotation,0))/2*scale;
+ coords+=(DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,yaw,0)+DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,yaw,0))/2*scale;
coords.y=oldcoords.y;
- //coords+=DoRotation(animation[currentanimation].offset,0,rotation,0)*scale;
+ //coords+=DoRotation(animation[animCurrent].offset,0,yaw,0)*scale;
targetoffset.y=coords.y;
if(onterrain)targetoffset.y=terrain.getHeight(coords.x,coords.z);
- currentoffset=DoRotation(animation[currentanimation].offset*-1,0,rotation,0)*scale;
+ currentoffset=DoRotation(animation[animCurrent].offset*-1,0,yaw,0)*scale;
currentoffset.y-=(coords.y-targetoffset.y);
coords.y=targetoffset.y;
targetoffset=0;
normalsupdatedelay=0;
}
- if(currentanimation==upunchanim){
- targetanimation=getStop();
+ if(animCurrent==upunchanim){
+ animTarget=getStop();
normalsupdatedelay=0;
lastfeint=0;
}
- if(currentanimation==rabbitkickanim&&targetanimation!=backflipanim){
- targetrotation=rotation;
+ if(animCurrent==rabbitkickanim&&animTarget!=backflipanim){
+ targetyaw=yaw;
bool hasstaff;
hasstaff=0;
- if(num_weapons>0)if(weapons.type[0]==staff)hasstaff=1;
+ if(num_weapons>0)if(weapons[0].getType()==staff)hasstaff=1;
if(!hasstaff)DoDamage(35);
RagDoll(0);
lastfeint=0;
rabbitkickragdoll=1;
}
- if(currentanimation==rabbitkickreversedanim){
+ if(animCurrent==rabbitkickreversedanim){
if(!feint){
velocity=0;
velocity.y=-10;
//DoDamage(100);
RagDoll(0);
skeleton.spinny=0;
- if(id!=0)SolidHitBonus();
+ SolidHitBonus(!id); // FIXME: tricky id
}
if(feint){
escapednum++;
- targetanimation=rollanim;
+ animTarget=rollanim;
coords+=facing;
- if(id==0)OPENAL_SetPaused(channels[whooshsound], true);
+ if(id==0)pause_sound(whooshsound);
}
lastfeint=0;
}
- if(currentanimation==rabbittackledbackanim||currentanimation==rabbittackledfrontanim){
+ if(animCurrent==rabbittackledbackanim||animCurrent==rabbittackledfrontanim){
velocity=0;
velocity.y=-10;
RagDoll(0);
skeleton.spinny=0;
}
- if(currentanimation==jumpreversedanim){
+ if(animCurrent==jumpreversedanim){
if(!feint){
velocity=0;
velocity.y=-10;
//DoDamage(100);
RagDoll(0);
skeleton.spinny=0;
- if(id!=0)SolidHitBonus();
+ SolidHitBonus(!id); // FIXME: tricky id
}
if(feint){
escapednum++;
- targetanimation=rollanim;
+ animTarget=rollanim;
coords+=facing*2;
- if(id==0)OPENAL_SetPaused(channels[whooshsound], true);
+ if(id==0)pause_sound(whooshsound);
}
lastfeint=0;
}
- if(animation[currentanimation].attack==normalattack&&!victim->skeleton.free&&victim->targetanimation!=staggerbackhighanim&&victim->targetanimation!=staggerbackhardanim&&targetanimation!=winduppunchblockedanim&&targetanimation!=blockhighleftanim&&targetanimation!=swordslashparryanim&&targetanimation!=swordslashparriedanim&&targetanimation!=crouchstabanim&&targetanimation!=swordgroundstabanim){
- targetanimation=getupfromfrontanim;
+ if(animation[animCurrent].attack==normalattack&&!victim->skeleton.free&&victim->animTarget!=staggerbackhighanim&&victim->animTarget!=staggerbackhardanim&&animTarget!=winduppunchblockedanim&&animTarget!=blockhighleftanim&&animTarget!=swordslashparryanim&&animTarget!=swordslashparriedanim&&animTarget!=crouchstabanim&&animTarget!=swordgroundstabanim){
+ animTarget=getupfromfrontanim;
lastfeint=0;
}
- else if(animation[currentanimation].attack==normalattack){
- targetanimation=getIdle();
+ else if(animation[animCurrent].attack==normalattack){
+ animTarget=getIdle();
lastfeint=0;
}
- if(currentanimation==blockhighleftanim&&aitype!=playercontrolled){
- targetanimation=blockhighleftstrikeanim;
+ if(animCurrent==blockhighleftanim&&aitype!=playercontrolled){
+ animTarget=blockhighleftstrikeanim;
}
- if(currentanimation==knifeslashstartanim||currentanimation==knifethrowanim||currentanimation==swordslashanim||currentanimation==staffhitanim||currentanimation==staffgroundsmashanim||currentanimation==staffspinhitanim){
- targetanimation=getIdle();
+ if(animCurrent==knifeslashstartanim||animCurrent==knifethrowanim||animCurrent==swordslashanim||animCurrent==staffhitanim||animCurrent==staffgroundsmashanim||animCurrent==staffspinhitanim){
+ animTarget=getIdle();
lastfeint=0;
}
- if(currentanimation==spinkickanim&&victim->skeleton.free){
- if(creature==rabbittype)targetanimation=fightidleanim;
+ if(animCurrent==spinkickanim&&victim->skeleton.free){
+ if(creature==rabbittype)animTarget=fightidleanim;
}
}
target=0;
if(isIdle()&&!wasIdle())normalsupdatedelay=0;
- if(currentanimation==jumpupanim&&velocity.y<0&&!isFlip()){
- targetanimation=jumpdownanim;
+ if(animCurrent==jumpupanim&&velocity.y<0&&!isFlip()){
+ animTarget=jumpdownanim;
}
}
if(!skeleton.free){
oldtarget=target;
- if(!transspeed&&animation[targetanimation].attack!=2&&animation[targetanimation].attack!=3){
+ if(!transspeed&&animation[animTarget].attack!=2&&animation[animTarget].attack!=3){
if(!isRun()||!wasRun()){
- if(animation[targetanimation].speed[targetframe]>animation[currentanimation].speed[currentframe])
- target+=multiplier*animation[targetanimation].speed[targetframe]*speed*2;
- if(animation[targetanimation].speed[targetframe]<=animation[currentanimation].speed[currentframe])
- target+=multiplier*animation[currentanimation].speed[currentframe]*speed*2;
+ if(animation[animTarget].speed[frameTarget]>animation[animCurrent].speed[frameCurrent])
+ target+=multiplier*animation[animTarget].speed[frameTarget]*speed*2;
+ if(animation[animTarget].speed[frameTarget]<=animation[animCurrent].speed[frameCurrent])
+ target+=multiplier*animation[animCurrent].speed[frameCurrent]*speed*2;
}
if(isRun()&&wasRun()){
float tempspeed;
tempspeed=velspeed;
if(tempspeed<10*speedmult)tempspeed=10*speedmult;
- target+=multiplier*animation[targetanimation].speed[currentframe]*speed*1.7*tempspeed/(speed*45*scale);
+ target+=multiplier*animation[animTarget].speed[frameCurrent]*speed*1.7*tempspeed/(speed*45*scale);
}
}
else if(transspeed)target+=multiplier*transspeed*speed*2;
else{
if(!isRun()||!wasRun()){
- if(animation[targetanimation].speed[targetframe]>animation[currentanimation].speed[currentframe])
- target+=multiplier*animation[targetanimation].speed[targetframe]*2;
- if(animation[targetanimation].speed[targetframe]<=animation[currentanimation].speed[currentframe])
- target+=multiplier*animation[currentanimation].speed[currentframe]*2;
+ if(animation[animTarget].speed[frameTarget]>animation[animCurrent].speed[frameCurrent])
+ target+=multiplier*animation[animTarget].speed[frameTarget]*2;
+ if(animation[animTarget].speed[frameTarget]<=animation[animCurrent].speed[frameCurrent])
+ target+=multiplier*animation[animCurrent].speed[frameCurrent]*2;
}
}
- if(currentanimation!=targetanimation)target=(target+oldtarget)/2;
+ if(animCurrent!=animTarget)target=(target+oldtarget)/2;
- if(target>1){currentframe=targetframe; target=1;}
+ if(target>1){frameCurrent=frameTarget; target=1;}
oldrot=rot;
rot=targetrot*target;
- rotation+=rot-oldrot;
+ yaw+=rot-oldrot;
if(target==1){
rot=0;
oldrot=0;
targetrot=0;
}
- if(currentanimation!=oldcurrentanimation||targetanimation!=oldtargetanimation||((currentframe!=oldcurrentframe||targetframe!=oldtargetframe)&&!calcrot)){
+ if(animCurrent!=oldanimCurrent||animTarget!=oldanimTarget||((frameCurrent!=oldframeCurrent||frameTarget!=oldframeTarget)&&!calcrot)){
//Old rotates
for(i=0;i<skeleton.num_joints;i++){
- skeleton.joints[i].position=animation[currentanimation].position[i][currentframe];
+ skeleton.joints[i].position=animation[animCurrent].position[i][frameCurrent];
}
skeleton.FindForwards();
for(i=0;i<skeleton.num_muscles;i++){
if(skeleton.muscles[i].visible)
{
- skeleton.FindRotationMuscle(i,targetanimation);
+ skeleton.FindRotationMuscle(i,animTarget);
}
}
for(i=0;i<skeleton.num_muscles;i++){
//New rotates
for(i=0;i<skeleton.num_joints;i++){
- skeleton.joints[i].position=animation[targetanimation].position[i][targetframe];
+ skeleton.joints[i].position=animation[animTarget].position[i][frameTarget];
}
skeleton.FindForwards();
for(i=0;i<skeleton.num_muscles;i++){
if(skeleton.muscles[i].visible)
{
- skeleton.FindRotationMuscle(i,targetanimation);
+ skeleton.FindRotationMuscle(i,animTarget);
}
}
for(i=0;i<skeleton.num_muscles;i++){
}
}
}
- if(currentframe>=animation[currentanimation].numframes)currentframe=animation[currentanimation].numframes-1;
+ if(frameCurrent>=animation[animCurrent].numframes)frameCurrent=animation[animCurrent].numframes-1;
- oldcurrentanimation=currentanimation;
- oldtargetanimation=targetanimation;
- oldtargetframe=targetframe;
- oldcurrentframe=currentframe;
+ oldanimCurrent=animCurrent;
+ oldanimTarget=animTarget;
+ oldframeTarget=frameTarget;
+ oldframeCurrent=frameCurrent;
for(i=0;i<skeleton.num_joints;i++){
- skeleton.joints[i].velocity=(animation[currentanimation].position[i][currentframe]*(1-target)+animation[targetanimation].position[i][targetframe]*(target)-skeleton.joints[i].position)/multiplier;
- skeleton.joints[i].position=animation[currentanimation].position[i][currentframe]*(1-target)+animation[targetanimation].position[i][targetframe]*(target);
+ skeleton.joints[i].velocity=(animation[animCurrent].position[i][frameCurrent]*(1-target)+animation[animTarget].position[i][frameTarget]*(target)-skeleton.joints[i].position)/multiplier;
+ skeleton.joints[i].position=animation[animCurrent].position[i][frameCurrent]*(1-target)+animation[animTarget].position[i][frameTarget]*(target);
}
offset=currentoffset*(1-target)+targetoffset*target;
for(i=0;i<skeleton.num_muscles;i++){
}
if(isLanding()&&landhard){
- //if(abs(velocity.y)>fast_sqrt(velocity.x*velocity.x*velocity.z*velocity.z)){
if(id==0)camerashake+=.4;
- targetanimation=getLandhard();
- targetframe=0;
+ animTarget=getLandhard();
+ frameTarget=0;
target=0;
landhard=0;
transspeed=15;
- //}
}
}
//skeleton.DoConstraints();
static int howmany;
static int bloodsize;
static int startx,starty,endx,endy;
- static int texdetailint;
static GLubyte color;
static XYZ bloodvel;
superruntoggle=0;
if(aitype!=passivetype){
superruntoggle=1;
- if(aitype==attacktypecutoff&&(player[0].isIdle()||player[0].isCrouch()||player[0].skeleton.free||player[0].targetanimation==getupfrombackanim||player[0].targetanimation==getupfromfrontanim||player[0].targetanimation==sneakanim)&&findDistancefast(&coords,&player[0].coords)<16){
+ if(aitype==attacktypecutoff&&(player[0].isIdle()||player[0].isCrouch()||player[0].skeleton.free||player[0].animTarget==getupfrombackanim||player[0].animTarget==getupfromfrontanim||player[0].animTarget==sneakanim)&&distsq(&coords,&player[0].coords)<16){
superruntoggle=0;
}
}
if(scale<0.2)superruntoggle=0;
- if(targetanimation==wolfrunninganim&&!superruntoggle){
- targetanimation=getRun();
- targetframe=0;
+ if(animTarget==wolfrunninganim&&!superruntoggle){
+ animTarget=getRun();
+ frameTarget=0;
}
}
if(weaponactive==-1&&num_weapons>0){
- if(weapons.type[weaponids[0]]==staff){
+ if(weapons[weaponids[0]].getType()==staff){
weaponactive=0;
}
}
if(burnt>.6)burnt=.6;
OPENAL_SetVolume(channels[stream_firesound], 256+256*findLength(&velocity)/3);
- if(targetanimation==jumpupanim||targetanimation==jumpdownanim||isFlip()){
+ if(animTarget==jumpupanim||animTarget==jumpdownanim||isFlip()){
float gLoc[3];
float vel[3];
gLoc[0]=coords.x;
howmany=abs(Random()%(skeleton.num_joints));
if(!skeleton.free)flatvelocity=(coords-oldcoords)/multiplier/2;//velocity/2;
if(skeleton.free)flatvelocity=skeleton.joints[howmany].velocity*scale/2;
- if(!skeleton.free)flatfacing=DoRotation(DoRotation(DoRotation(skeleton.joints[howmany].position,0,0,tilt),tilt2,0,0),0,rotation,0)*scale+coords;
+ if(!skeleton.free)flatfacing=DoRotation(DoRotation(DoRotation(skeleton.joints[howmany].position,0,0,tilt),tilt2,0,0),0,yaw,0)*scale+coords;
if(skeleton.free)flatfacing=skeleton.joints[howmany].position*scale+coords;
Sprite::MakeSprite(flamesprite, flatfacing,flatvelocity, 1,1,1, .6+(float)abs(Random()%100)/200-.25, 1);
}
howmany=abs(Random()%(skeleton.num_joints));
if(!skeleton.free)flatvelocity=(coords-oldcoords)/multiplier/2;//velocity/2;
if(skeleton.free)flatvelocity=skeleton.joints[howmany].velocity*scale/2;
- if(!skeleton.free)flatfacing=DoRotation(DoRotation(DoRotation(skeleton.joints[howmany].position,0,0,tilt),tilt2,0,0),0,rotation,0)*scale+coords;
+ if(!skeleton.free)flatfacing=DoRotation(DoRotation(DoRotation(skeleton.joints[howmany].position,0,0,tilt),tilt2,0,0),0,yaw,0)*scale+coords;
if(skeleton.free)flatfacing=skeleton.joints[howmany].position*scale+coords;
Sprite::MakeSprite(breathsprite, flatfacing,flatvelocity, 1,1,1, .6+(float)abs(Random()%100)/200-.25, .3);
}
if(bleeding>0){
bleeding-=multiplier*.3;
if(bloodtoggle==2){
- glBindTexture(GL_TEXTURE_2D,skeleton.drawmodel.textureptr);
- if(bleeding<=0&&(detail!=2||osx))DoMipmaps(5,0,0,skeleton.skinsize,skeleton.skinsize);
+ skeleton.drawmodel.textureptr.bind();
+ if(bleeding<=0&&(detail!=2||osx))DoMipmaps();
}
}
bloodvel=0;
if(!skeleton.free){
bloodvel.z=5*neckspurtamount;
- bloodvel=DoRotation(bloodvel,((float)(Random()%100))/40,rotation+((float)(Random()%100))/40,0)*scale;
+ bloodvel=DoRotation(bloodvel,((float)(Random()%100))/40,yaw+((float)(Random()%100))/40,0)*scale;
}
if(skeleton.free){
bloodvel-=DoRotation(skeleton.forward*10*scale,((float)(Random()%100))/40,((float)(Random()%100))/40,0);
}
- if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/40,rotation+((float)(Random()%100))/40,0)*scale;
+ if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[head]].velocity,((float)(Random()%100))/40,yaw+((float)(Random()%100))/40,0)*scale;
if(!skeleton.free)bloodvel+=DoRotation(velocity,((float)(Random()%100))/40,((float)(Random()%100))/40,0)*scale;
if(skeleton.free)Sprite::MakeSprite(bloodsprite, (skeleton.joints[skeleton.jointlabels[neck]].position+(skeleton.joints[skeleton.jointlabels[neck]].position-skeleton.joints[skeleton.jointlabels[head]].position)/5)*scale+coords,bloodvel, 1,1,1, .05, .9);
- if(!skeleton.free)Sprite::MakeSprite(bloodsprite, DoRotation(skeleton.joints[skeleton.jointlabels[neck]].position+(skeleton.joints[skeleton.jointlabels[neck]].position-skeleton.joints[skeleton.jointlabels[head]].position)/5,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, .9);
+ if(!skeleton.free)Sprite::MakeSprite(bloodsprite, DoRotation(skeleton.joints[skeleton.jointlabels[neck]].position+(skeleton.joints[skeleton.jointlabels[neck]].position-skeleton.joints[skeleton.jointlabels[head]].position)/5,0,yaw,0)*scale+coords,bloodvel, 1,1,1, .05, .9);
neckspurtparticledelay=.05;
}
if(neckspurtdelay<0){
XYZ bloodvel;
if(bloodtoggle){
bloodvel=0;
- if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[abdomen]].velocity,((float)(Random()%100))/4,rotation+((float)(Random()%100))/4,0)*scale;
+ if(skeleton.free)bloodvel+=DoRotation(skeleton.joints[skeleton.jointlabels[abdomen]].velocity,((float)(Random()%100))/4,yaw+((float)(Random()%100))/4,0)*scale;
if(!skeleton.free)bloodvel+=DoRotation(velocity,((float)(Random()%100))/4,((float)(Random()%100))/4,0)*scale;
if(skeleton.free)Sprite::MakeSprite(bloodsprite, skeleton.joints[skeleton.jointlabels[abdomen]].position*scale+coords,bloodvel, 1,1,1, .05, 1);
- if(!skeleton.free)Sprite::MakeSprite(bloodsprite, DoRotation((skeleton.joints[skeleton.jointlabels[abdomen]].position+skeleton.joints[skeleton.jointlabels[abdomen]].position)/2,0,rotation,0)*scale+coords,bloodvel, 1,1,1, .05, 1);
+ if(!skeleton.free)Sprite::MakeSprite(bloodsprite, DoRotation((skeleton.joints[skeleton.jointlabels[abdomen]].position+skeleton.joints[skeleton.jointlabels[abdomen]].position)/2,0,yaw,0)*scale+coords,bloodvel, 1,1,1, .05, 1);
}
}
bloodloss+=deathbleeding*multiplier*80;
deathbleeding-=multiplier*1.6;
//if(id==0)deathbleeding-=multiplier*.2;
if(deathbleeding<0)deathbleeding=0;
- if(bloodloss>damagetolerance&&animation[targetanimation].attack==neutral){
+ if(bloodloss>damagetolerance&&animation[animTarget].attack==neutral){
if(weaponactive!=-1){
- weapons.owner[weaponids[0]]=-1;
- weapons.velocity[weaponids[0]]=velocity*scale*-.3;
- weapons.velocity[weaponids[0]].x+=.01;
- weapons.tipvelocity[weaponids[0]]=velocity*scale;
- weapons.missed[weaponids[0]]=1;
- weapons.hitsomething[weaponids[0]]=0;
- weapons.freetime[weaponids[0]]=0;
- weapons.firstfree[weaponids[0]]=1;
- weapons.physics[weaponids[0]]=1;
+ weapons[weaponids[0]].owner=-1;
+ weapons[weaponids[0]].velocity=velocity*scale*-.3;
+ weapons[weaponids[0]].velocity.x+=.01;
+ weapons[weaponids[0]].tipvelocity=velocity*scale;
+ weapons[weaponids[0]].missed=1;
+ weapons[weaponids[0]].hitsomething=0;
+ weapons[weaponids[0]].freetime=0;
+ weapons[weaponids[0]].firstfree=1;
+ weapons[weaponids[0]].physics=1;
num_weapons--;
if(num_weapons){
weaponids[0]=weaponids[num_weapons];
}
if(!dead&&creature==wolftype){
- bonus=Wolfbonus;
- bonustime=0;
- bonusvalue=300;
+ award_bonus(0, Wolfbonus);
}
dead=2;
- if(targetanimation==knifefollowedanim&&!skeleton.free){
+ if(animTarget==knifefollowedanim&&!skeleton.free){
for(i=0;i<skeleton.num_joints;i++){
skeleton.joints[i].velocity=0;
skeleton.joints[i].velocity.y=-2;
}
}
- if(texupdatedelay<0&&bleeding>0&&bloodtoggle==2&&findDistancefast(&viewer,&coords)<9){
+ if(texupdatedelay<0&&bleeding>0&&bloodtoggle==2&&distsq(&viewer,&coords)<9){
texupdatedelay=.12;
bloodsize=5-realtexdetail;
startx=0;
starty=0;
- texdetailint=realtexdetail;
startx=bleedy;//abs(Random()%(skeleton.skinsize-bloodsize-1));
starty=bleedx;//abs(Random()%(skeleton.skinsize-bloodsize-1));
endx=startx+bloodsize;
}
}
if(!osx&&detail>1){
- glBindTexture(GL_TEXTURE_2D,skeleton.drawmodel.textureptr);
- DoMipmaps(0,startx,endx,starty,endy);
+ skeleton.drawmodel.textureptr.bind();
+ DoMipmaps();
}
if(!skeleton.free){
if(environment==snowyenvironment){
XYZ footpoint;
XYZ footvel;
- if(!skeleton.free)footvel=DoRotation(skeleton.specialforward[0],0,rotation,0)*-1;
+ if(!skeleton.free)footvel=DoRotation(skeleton.specialforward[0],0,yaw,0)*-1;
if(skeleton.free)footvel=skeleton.specialforward[0]*-1;
- if(!skeleton.free)footpoint=DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,rotation,0)*scale+coords;
+ if(!skeleton.free)footpoint=DoRotation((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2,0,yaw,0)*scale+coords;
if(skeleton.free)footpoint=((skeleton.joints[skeleton.jointlabels[head]].position+skeleton.joints[skeleton.jointlabels[neck]].position)/2)*scale+coords;
- if(targetanimation==sleepanim)footvel=DoRotation(footvel,0,90,0);
+ if(animTarget==sleepanim)footvel=DoRotation(footvel,0,90,0);
Sprite::MakeSprite(breathsprite, footpoint+footvel*.2,footvel*.4, 1,1,1, .4, .3);
}
}
}
if(!dead){
twitchdelay-=multiplier*1.5;
- if(targetanimation!=hurtidleanim){
+ if(animTarget!=hurtidleanim){
if(headmorphstart==0&&headmorphend==0&&twitchdelay<=0){
headmorphness=0;
targetheadmorphness=1;
headmorphend=0;
}
}
- if((isIdle()||isCrouch())&&targetanimation!=hurtidleanim){
+ if((isIdle()||isCrouch())&&animTarget!=hurtidleanim){
twitchdelay3-=multiplier*1;
if(Random()%2==0){
if(righthandmorphstart==0&&righthandmorphend==0&&twitchdelay3<=0){
if(creature==wolftype){
twitchdelay2-=multiplier*1.5;
if(tailmorphend!=0)
- if((isRun()||targetanimation==jumpupanim||targetanimation==jumpdownanim||targetanimation==backflipanim)&&!skeleton.free){
+ if((isRun()||animTarget==jumpupanim||animTarget==jumpdownanim||animTarget==backflipanim)&&!skeleton.free){
tailmorphness=0;
targettailmorphness=1;
tailmorphend=0;
twitchdelay2=.1;
}
if(tailmorphend!=5)
- if(targetanimation==flipanim||targetanimation==frontflipanim||targetanimation==rollanim||skeleton.free){
+ if(animTarget==flipanim||animTarget==frontflipanim||animTarget==rollanim||skeleton.free){
tailmorphness=0;
targettailmorphness=1;
tailmorphend=5;
if(bloodtoggle&&!bled)
for(l=0;l<terrain.patchobjectnum[whichpatchx][whichpatchz];l++){
j=terrain.patchobjects[whichpatchx][whichpatchz][l];
- XYZ point=DoRotation(headpoint-objects.position[j],0,-objects.rotation[j],0);
+ XYZ point=DoRotation(headpoint-objects.position[j],0,-objects.yaw[j],0);
float size=.8;
float opacity=.6;
- float rotation=0;
- objects.model[j].MakeDecal(blooddecalslow,&point,&size,&opacity,&rotation);
+ float yaw=0;
+ objects.model[j].MakeDecal(blooddecalslow,&point,&size,&opacity,&yaw);
}
bled=1;
}
unconscioustime=0;
if(creature==wolftype){
- bonus=Wolfbonus;
- bonustime=0;
- bonusvalue=300;
+ award_bonus(0, Wolfbonus);
}
RagDoll(0);
if(weaponactive!=-1){
- weapons.owner[weaponids[0]]=-1;
- weapons.velocity[weaponids[0]]=velocity*scale*-.3;
- weapons.velocity[weaponids[0]].x+=.01;
- weapons.tipvelocity[weaponids[0]]=velocity*scale;
- weapons.missed[weaponids[0]]=1;
- weapons.hitsomething[weaponids[0]]=0;
- weapons.freetime[weaponids[0]]=0;
- weapons.firstfree[weaponids[0]]=1;
- weapons.physics[weaponids[0]]=1;
+ weapons[weaponids[0]].owner=-1;
+ weapons[weaponids[0]].velocity=velocity*scale*-.3;
+ weapons[weaponids[0]].velocity.x+=.01;
+ weapons[weaponids[0]].tipvelocity=velocity*scale;
+ weapons[weaponids[0]].missed=1;
+ weapons[weaponids[0]].hitsomething=0;
+ weapons[weaponids[0]].freetime=0;
+ weapons[weaponids[0]].firstfree=1;
+ weapons[weaponids[0]].physics=1;
num_weapons--;
if(num_weapons){
weaponids[0]=weaponids[num_weapons];
- if((id==0||findDistancefast(&coords,&viewer)<50)&&autoslomo){
+ if((id==0||distsq(&coords,&viewer)<50)&&autoslomo){
slomo=1;
slomodelay=.2;
}
DoBlood(1,255);
if(weaponactive!=-1){
- weapons.owner[weaponids[0]]=-1;
- weapons.velocity[weaponids[0]]=velocity*scale*-.3;
- weapons.velocity[weaponids[0]].x+=.01;
- weapons.tipvelocity[weaponids[0]]=velocity*scale;
- weapons.missed[weaponids[0]]=1;
- weapons.hitsomething[weaponids[0]]=0;
- weapons.freetime[weaponids[0]]=0;
- weapons.firstfree[weaponids[0]]=1;
- weapons.physics[weaponids[0]]=1;
+ weapons[weaponids[0]].owner=-1;
+ weapons[weaponids[0]].velocity=velocity*scale*-.3;
+ weapons[weaponids[0]].velocity.x+=.01;
+ weapons[weaponids[0]].tipvelocity=velocity*scale;
+ weapons[weaponids[0]].missed=1;
+ weapons[weaponids[0]].hitsomething=0;
+ weapons[weaponids[0]].freetime=0;
+ weapons[weaponids[0]].firstfree=1;
+ weapons[weaponids[0]].physics=1;
num_weapons--;
if(num_weapons){
weaponids[0]=weaponids[num_weapons];
bled=0;
if(!dead&&creature==wolftype){
- bonus=Wolfbonus;
- bonustime=0;
- bonusvalue=300;
+ award_bonus(0, Wolfbonus);
}
- if(id!=0&&unconscioustime<.1&&(bonus!=spinecrusher||bonustime>1)&&(bonus!=FinishedBonus||bonustime>1)&&bloodloss<damagetolerance){
- bonus=touchofdeath;
- bonustime=0;
- bonusvalue=150;
- }
+ if(unconscioustime<.1&&(bonus!=spinecrusher||bonustime>1)&&(bonus!=FinishedBonus||bonustime>1)&&bloodloss<damagetolerance)
+ award_bonus(id, touchofdeath);
if(id!=0&&unconscioustime>.1){
numafterkill++;
}
skeleton.free=1;
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- PlaySoundEx( breaksound, samp[breaksound], NULL, true);
- OPENAL_3D_SetAttributes(channels[breaksound], gLoc, vel);
- OPENAL_SetVolume(channels[breaksound], 512);
- OPENAL_SetPaused(channels[breaksound], false);
- /*if(id==0||findDistancefast(&coords,&viewer)<50){
- slomo=1;
- slomodelay=.2;
- }*/
+ emit_sound_at(breaksound, coords);
}
if(skeleton.free==1){
- if(id==0)OPENAL_SetPaused(channels[whooshsound], true);
+ if(id==0)pause_sound(whooshsound);
if(!dead){
//If knocked over, open hands and close mouth
skeleton.DoGravity(&scale);
float damageamount;
damageamount=skeleton.DoConstraints(&coords,&scale)*5;
- if(id!=0&&damage>damagetolerance-damageamount&&!dead&&(bonus!=spinecrusher||bonustime>1)&&(bonus!=style||bonustime>1)&&(bonus!=cannon||bonustime>1)){
- bonus=deepimpact;
- bonustime=0;
- bonusvalue=50;
- }
+ if(damage>damagetolerance-damageamount&&!dead&&(bonus!=spinecrusher||bonustime>1)&&(bonus!=style||bonustime>1)&&(bonus!=cannon||bonustime>1))
+ award_bonus(id, deepimpact);
DoDamage(damageamount/((protectionhigh+protectionhead+protectionlow)/3));
average=0;
velocity=0;
}
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
-
if(findLength(&average)<10&&dead&&skeleton.free){
skeleton.longdead+=(2000-findLength(&average))*multiplier+multiplier;
if(skeleton.longdead>2000){
if(skeleton.longdead>6000){
- if(id==0)OPENAL_SetPaused(channels[whooshsound], true);
+ if(id==0)pause_sound(whooshsound);
skeleton.free=3;
DrawSkeleton();
skeleton.free=2;
if(bloodtoggle&&!bled)
for(l=0;l<terrain.patchobjectnum[whichpatchx][whichpatchz];l++){
j=terrain.patchobjects[whichpatchx][whichpatchz][l];
- XYZ point=DoRotation(headpoint-objects.position[j],0,-objects.rotation[j],0);
+ XYZ point=DoRotation(headpoint-objects.position[j],0,-objects.yaw[j],0);
float size=.2*1.2;
float opacity=.6;
- float rotation=0;
- objects.model[j].MakeDecal(blooddecal,&point,&size,&opacity,&rotation);
+ float yaw=0;
+ objects.model[j].MakeDecal(blooddecal,&point,&size,&opacity,&yaw);
}
bled=1;
}
if(bloodtoggle&&!bled)
for(l=0;l<terrain.patchobjectnum[whichpatchx][whichpatchz];l++){
j=terrain.patchobjects[whichpatchx][whichpatchz][l];
- XYZ point=DoRotation(headpoint-objects.position[j],0,-objects.rotation[j],0);
+ XYZ point=DoRotation(headpoint-objects.position[j],0,-objects.yaw[j],0);
float size=.8;
float opacity=.6;
- float rotation=0;
- objects.model[j].MakeDecal(blooddecalslow,&point,&size,&opacity,&rotation);
+ float yaw=0;
+ objects.model[j].MakeDecal(blooddecalslow,&point,&size,&opacity,&yaw);
}
bled=1;
}
if(objects.type[i]!=treeleavestype&&objects.type[i]!=bushtype&&objects.type[i]!=firetype){
colviewer=startpoint;
coltarget=endpoint;
- if(objects.model[i].LineCheck(&colviewer,&coltarget,&colpoint,&objects.position[i],&objects.rotation[i])!=-1)canrecover=0;
+ if(objects.model[i].LineCheck(&colviewer,&coltarget,&colpoint,&objects.position[i],&objects.yaw[i])!=-1)canrecover=0;
}
}
if(canrecover){
}
Normalise(&terrainnormal);
- targetrotation=-asin(0-terrainnormal.x);
- targetrotation*=360/6.28;
- if(terrainnormal.z<0)targetrotation=180-targetrotation;
- rotation=targetrotation;
-
- //if(skeleton.forward.y<0){
- targetframe=0;
- //}
- //if(skeleton.forward.y>-.3){
- // targetframe=2;
- //}
- targetanimation=flipanim;
+ targetyaw=-asin(0-terrainnormal.x);
+ targetyaw*=360/6.28;
+ if(terrainnormal.z<0)targetyaw=180-targetyaw;
+ yaw=targetyaw;
+
+ frameTarget=0;
+ // frameTarget=2;
+ animTarget=flipanim;
crouchtogglekeydown=1;
target=0;
tilt2=0;
targettilt2=0;
- currentanimation=tempanim;
- currentframe=0;
+ animCurrent=tempanim;
+ frameCurrent=0;
target=0;
//tilt2=targettilt2;
for(i=0;i<skeleton.num_joints;i++){
tempanimation.position[i][0]=skeleton.joints[i].position;
- tempanimation.position[i][0]=DoRotation(tempanimation.position[i][0],0,-rotation,0);
+ tempanimation.position[i][0]=DoRotation(tempanimation.position[i][0],0,-yaw,0);
}
}
}
if(findLength(&average)<10&&!dead&&skeleton.free){
skeleton.longdead+=(2000-findLength(&average))*multiplier+multiplier;
if(skeleton.longdead>(damage+500)*1.5){
- if(id==0)OPENAL_SetPaused(channels[whooshsound], true);
+ if(id==0)pause_sound(whooshsound);
skeleton.free=0;
velocity=0;
XYZ middle;
}
Normalise(&terrainnormal);
- targetrotation=-asin(0-terrainnormal.x);
- targetrotation*=360/6.28;
- if(terrainnormal.z<0)targetrotation=180-targetrotation;
- rotation=targetrotation;
-
- /*if(onterrain){
- terrainnormal=terrain.getNormal(coords.x,coords.z);
- targettilt2=asin(terrainnormal.y)*180/3.14*-1;
- }
- else*/
-
- /*XYZ otherterrainnormal;
- otherterrainnormal=terrain.getNormal(coords.x,coords.y);
- otherterrainnormal.y=fast_sqrt(otherterrainnormal.x*otherterrainnormal.x+otherterrainnormal.z*otherterrainnormal.z)*-1;
- if(abs(terrainnormal.y)<abs(otherterrainnormal.y))terrainnormal.y=fast_sqrt(otherterrainnormal.x*otherterrainnormal.x+otherterrainnormal.z*otherterrainnormal.z)*-1;
- targettilt2=asin(otherterrainnormal.y)*180/3.14;
- */
+ targetyaw=-asin(0-terrainnormal.x);
+ targetyaw*=360/6.28;
+ if(terrainnormal.z<0)targetyaw=180-targetyaw;
+ yaw=targetyaw;
targettilt2=asin(terrainnormal.y)*180/3.14*-1;
-
if(skeleton.forward.y<0){
- targetanimation=getupfrombackanim;
- targetframe=0;
+ animTarget=getupfrombackanim;
+ frameTarget=0;
targettilt2=0;
}
if(skeleton.forward.y>-.3){
- targetanimation=getupfromfrontanim;
- rotation+=180;
- targetrotation+=180;
+ animTarget=getupfromfrontanim;
+ yaw+=180;
+ targetyaw+=180;
targettilt2*=-1;
- targetframe=0;
+ frameTarget=0;
targettilt2=0;
}
if((Random()%8==0&&id!=0&&creature==rabbittype)||(Random()%2==0&&id!=0&&creature==wolftype)||(id==0&&crouchkeydown&&(forwardkeydown||backkeydown||leftkeydown||rightkeydown))){
- targetanimation=rollanim;
- targetrotation=lookrotation;
+ animTarget=rollanim;
+ targetyaw=lookyaw;
if(id==0){
if(rightkeydown){
- targetrotation-=90;
- if(forwardkeydown)targetrotation+=45;
- if(backkeydown)targetrotation-=45;
+ targetyaw-=90;
+ if(forwardkeydown)targetyaw+=45;
+ if(backkeydown)targetyaw-=45;
}
if(leftkeydown){
- targetrotation+=90;
- if(forwardkeydown)targetrotation-=45;
- if(backkeydown)targetrotation+=45;
+ targetyaw+=90;
+ if(forwardkeydown)targetyaw-=45;
+ if(backkeydown)targetyaw+=45;
}
if(backkeydown){
if ( !leftkeydown&&!rightkeydown)
- targetrotation+=180;
+ targetyaw+=180;
}
- targetrotation+=180;
+ targetyaw+=180;
}
}
if(abs(targettilt2)>50)targettilt2=0;
- currentanimation=tempanim;
- currentframe=0;
+ animCurrent=tempanim;
+ frameCurrent=0;
target=0;
tilt2=targettilt2;
- if(middle.y>0&&targetanimation!=rollanim)targetoffset.y=middle.y+1;
+ if(middle.y>0&&animTarget!=rollanim)targetoffset.y=middle.y+1;
for(i=0;i<skeleton.num_joints;i++){
tempanimation.position[i][0]=skeleton.joints[i].position;
- tempanimation.position[i][0]=DoRotation(tempanimation.position[i][0],0,-rotation,0);
+ tempanimation.position[i][0]=DoRotation(tempanimation.position[i][0],0,-yaw,0);
}
}
}
bool hasstaff;
hasstaff=0;
- if(num_weapons>0)if(weapons.type[0]==staff)hasstaff=1;
+ if(num_weapons>0)if(weapons[0].getType()==staff)hasstaff=1;
if(!skeleton.freefall&&freefall&&((jumpkeydown&&jumpkeydowntime<.2)||(hasstaff&&rabbitkickragdoll))&&!dead){
if(velocity.y>-30){
XYZ tempvelocity;
tempvelocity=velocity;
Normalise(&tempvelocity);
- targetrotation=-asin(0-tempvelocity.x);
- targetrotation*=360/6.28;
- if(velocity.z<0)targetrotation=180-targetrotation;
- //targetrotation+=180;
+ targetyaw=-asin(0-tempvelocity.x);
+ targetyaw*=360/6.28;
+ if(velocity.z<0)targetyaw=180-targetyaw;
+ //targetyaw+=180;
skeleton.free=0;
if(dotproduct(&skeleton.forward,&tempvelocity)<0){
- targetanimation=rollanim;
- targetframe=2;
+ animTarget=rollanim;
+ frameTarget=2;
}
else{
- targetanimation=backhandspringanim;
- targetrotation+=180;
- targetframe=6;
+ animTarget=backhandspringanim;
+ targetyaw+=180;
+ frameTarget=6;
}
target=0;
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- PlaySoundEx( movewhooshsound, samp[movewhooshsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[movewhooshsound], gLoc, vel);
- OPENAL_SetVolume(channels[movewhooshsound], 128);
- OPENAL_SetPaused(channels[movewhooshsound], false);
-
- currentanimation=targetanimation;
- currentframe=targetframe-1;
+ emit_sound_at(movewhooshsound, coords, 128.);
+
+ animCurrent=animTarget;
+ frameCurrent=frameTarget-1;
target=0;
velocity=0;
- rotation=targetrotation;
+ yaw=targetyaw;
tilt=0;
targettilt=0;
tilt2=0;
}
if(skeleton.freefall==0)freefall=0;
- if(!isnormal(velocity.x)&&velocity.x){
- int xy=1;
- }
}
if(aitype!=passivetype||skeleton.free==1)
if(findLengthfast(&velocity)>.1)
for(i=0;i<objects.numobjects;i++){
if(objects.type[i]==firetype)
- if(findDistancefastflat(&coords,&objects.position[i])<objects.scale[i]*objects.scale[i]*12&&findDistancefast(&coords,&objects.position[i])<objects.scale[i]*objects.scale[i]*49){
+ if(distsqflat(&coords,&objects.position[i])<objects.scale[i]*objects.scale[i]*12&&distsq(&coords,&objects.position[i])<objects.scale[i]*objects.scale[i]*49){
if(onfire){
if(!objects.onfire[i]){
- float gLoc[3];
- float vel[3];
- gLoc[0]=objects.position[i].x;
- gLoc[1]=objects.position[i].y;
- gLoc[2]=objects.position[i].z;
- vel[0]=0;
- vel[1]=0;
- vel[2]=0;
- PlaySoundEx( firestartsound, samp[firestartsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[firestartsound], gLoc, vel);
- OPENAL_SetVolume(channels[firestartsound], 256);
- OPENAL_SetPaused(channels[firestartsound], false);
+ emit_sound_at(firestartsound, objects.position[i]);
}
objects.onfire[i]=1;
}
}
}
if(objects.type[i]==bushtype)
- if(findDistancefastflat(&coords,&objects.position[i])<objects.scale[i]*objects.scale[i]*12&&findDistancefast(&coords,&objects.position[i])<objects.scale[i]*objects.scale[i]*49){
+ if(distsqflat(&coords,&objects.position[i])<objects.scale[i]*objects.scale[i]*12&&distsq(&coords,&objects.position[i])<objects.scale[i]*objects.scale[i]*49){
if(onfire){
if(!objects.onfire[i]){
- float gLoc[3];
- float vel[3];
- gLoc[0]=objects.position[i].x;
- gLoc[1]=objects.position[i].y;
- gLoc[2]=objects.position[i].z;
- vel[0]=0;
- vel[1]=0;
- vel[2]=0;
- PlaySoundEx( firestartsound, samp[firestartsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[firestartsound], gLoc, vel);
- OPENAL_SetVolume(channels[firestartsound], 256);
- OPENAL_SetPaused(channels[firestartsound], false);
+ emit_sound_at(firestartsound, objects.position[i]);
}
objects.onfire[i]=1;
}
XYZ tempvel;
XYZ pos;
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- PlaySoundEx( bushrustle, samp[bushrustle], NULL, true);
- OPENAL_3D_SetAttributes(channels[bushrustle], gLoc, vel);
- OPENAL_SetVolume(channels[bushrustle], 40*findLength(&velocity));
- OPENAL_SetPaused(channels[bushrustle], false);
+ emit_sound_at(bushrustle, coords, 40*findLength(&velocity));
if(id==0){
envsound[numenvsounds]=coords;
}
XYZ tempcoord;
if(objects.type[i]==treeleavestype&&environment!=desertenvironment){
- if(objects.rotation2[i]==0)tempcoord=coords;
+ if(objects.pitch[i]==0)tempcoord=coords;
else{
tempcoord=coords-objects.position[i];
- tempcoord=DoRotation(tempcoord,0,-objects.rotation[i],0);
- tempcoord=DoRotation(tempcoord,-objects.rotation2[i],0,0);
+ tempcoord=DoRotation(tempcoord,0,-objects.yaw[i],0);
+ tempcoord=DoRotation(tempcoord,-objects.pitch[i],0,0);
tempcoord+=objects.position[i];
}
- if(findDistancefastflat(&tempcoord,&objects.position[i])<objects.scale[i]*objects.scale[i]*8&&findDistancefast(&tempcoord,&objects.position[i])<objects.scale[i]*objects.scale[i]*300&&tempcoord.y>objects.position[i].y+3*objects.scale[i]){
+ if(distsqflat(&tempcoord,&objects.position[i])<objects.scale[i]*objects.scale[i]*8&&distsq(&tempcoord,&objects.position[i])<objects.scale[i]*objects.scale[i]*300&&tempcoord.y>objects.position[i].y+3*objects.scale[i]){
if(objects.messedwith[i]<=0){
XYZ tempvel;
XYZ pos;
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- PlaySoundEx( bushrustle, samp[bushrustle], NULL, true);
- OPENAL_3D_SetAttributes(channels[bushrustle], gLoc, vel);
- OPENAL_SetVolume(channels[bushrustle], 40*findLength(&velocity));
- OPENAL_SetPaused(channels[bushrustle], false);
+ emit_sound_at(bushrustle, coords, 40*findLength(&velocity));
if(id==0){
envsound[numenvsounds]=coords;
if(tutoriallevel==1&&id!=0)play=0;
if(play&&aitype!=playercontrolled){
int whichsound=-1;
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
i=abs(Random()%4);
if(speechdelay<=0){
if(creature==rabbittype){
speechdelay=.3;
if(whichsound!=-1){
- PlaySoundEx( whichsound, samp[whichsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[whichsound], gLoc, vel);
- OPENAL_SetVolume(channels[whichsound], 512);
- OPENAL_SetPaused(channels[whichsound], false);
+ emit_sound_at(whichsound, coords);
}
}
- if(targetanimation==staggerbackhighanim)staggerdelay=1;
- if(targetanimation==staggerbackhardanim)staggerdelay=1;
+ if(animTarget==staggerbackhighanim)staggerdelay=1;
+ if(animTarget==staggerbackhardanim)staggerdelay=1;
staggerdelay-=multiplier;
- if(targetanimation!=crouchstabanim&&targetanimation!=swordgroundstabanim&&targetanimation!=staffgroundsmashanim)hasvictim=1;
- if(velocity.y<-30&&targetanimation==jumpdownanim)RagDoll(0);
- if(currentanimation!=getIdle()&&wasIdle()&&targetanimation!=getIdle()&&isIdle()){
- targetanimation=getIdle();
- targetframe=0;
+ if(animTarget!=crouchstabanim&&animTarget!=swordgroundstabanim&&animTarget!=staffgroundsmashanim)hasvictim=1;
+ if(velocity.y<-30&&animTarget==jumpdownanim)RagDoll(0);
+ if(animCurrent!=getIdle()&&wasIdle()&&animTarget!=getIdle()&&isIdle()){
+ animTarget=getIdle();
+ frameTarget=0;
target=0;
}
weaponmissdelay-=multiplier;
if(!isnormal(targettilt2)&&targettilt2){
targettilt2=0;
}
- if(!isnormal(targetrotation)&&targetrotation){
- targetrotation=0;
+ if(!isnormal(targetyaw)&&targetyaw){
+ targetyaw=0;
}
- if(targetanimation==bounceidleanim||targetanimation==wolfidle||targetanimation==walkanim||targetanimation==drawrightanim||targetanimation==crouchdrawrightanim||targetanimation==drawleftanim||targetanimation==fightidleanim||targetanimation==fightsidestep||targetanimation==hanganim||isCrouch()||targetanimation==backhandspringanim){
+ if(animTarget==bounceidleanim||animTarget==wolfidle||animTarget==walkanim||animTarget==drawrightanim||animTarget==crouchdrawrightanim||animTarget==drawleftanim||animTarget==fightidleanim||animTarget==fightsidestep||animTarget==hanganim||isCrouch()||animTarget==backhandspringanim){
//open hands and close mouth
- //if(targetanimation!=wolfidle){
if(righthandmorphend!=0&&righthandmorphness==targetrighthandmorphness){
righthandmorphness=0;
righthandmorphend=0;
lefthandmorphend=0;
targetlefthandmorphness=1;
}
- //s}
if(headmorphend!=3&&headmorphend!=5&&headmorphstart!=3&&headmorphstart!=5&&headmorphend!=0&&headmorphness==targetheadmorphness){
headmorphness=0;
}
}
- if(targetanimation==rollanim||targetanimation==dodgebackanim||targetanimation==removeknifeanim||targetanimation==knifefightidleanim||targetanimation==swordfightidleanim||targetanimation==blockhighleftstrikeanim||targetanimation==crouchremoveknifeanim||targetanimation==sneakanim||targetanimation==sweepanim||targetanimation==spinkickreversedanim||targetanimation==jumpdownanim||isWallJump()||isFlip()||targetanimation==climbanim||isRun()||targetanimation==getupfrombackanim||targetanimation==getupfromfrontanim){
+ if(animTarget==rollanim||animTarget==dodgebackanim||animTarget==removeknifeanim||animTarget==knifefightidleanim||animTarget==swordfightidleanim||animTarget==blockhighleftstrikeanim||animTarget==crouchremoveknifeanim||animTarget==sneakanim||animTarget==sweepanim||animTarget==spinkickreversedanim||animTarget==jumpdownanim||isWallJump()||isFlip()||animTarget==climbanim||isRun()||animTarget==getupfrombackanim||animTarget==getupfromfrontanim){
//open hands and mouth
if(righthandmorphend!=0&&righthandmorphness==targetrighthandmorphness){
righthandmorphness=0;
}
}
- if(targetanimation==jumpupanim||targetanimation==crouchstabanim||targetanimation==swordgroundstabanim||targetanimation==swordfightidlebothanim||targetanimation==blockhighleftanim||targetanimation==blockhighleftanim){
+ if(animTarget==jumpupanim||animTarget==crouchstabanim||animTarget==swordgroundstabanim||animTarget==swordfightidlebothanim||animTarget==blockhighleftanim||animTarget==blockhighleftanim){
//close hands and mouth
if(righthandmorphend!=1&&righthandmorphness==targetrighthandmorphness){
righthandmorphness=0;
}
}
- if(targetanimation==spinkickanim||targetanimation==staffspinhitreversalanim||targetanimation==staffspinhitreversedanim||targetanimation==staffhitreversalanim||targetanimation==staffhitreversedanim||targetanimation==hurtidleanim||targetanimation==winduppunchanim||targetanimation==swordslashreversalanim||targetanimation==swordslashreversedanim||targetanimation==knifeslashreversalanim||targetanimation==knifeslashreversedanim||targetanimation==knifethrowanim||targetanimation==knifefollowanim||targetanimation==knifefollowedanim||targetanimation==killanim||targetanimation==dropkickanim||targetanimation==upunchanim||targetanimation==knifeslashstartanim||targetanimation==swordslashanim||targetanimation==staffhitanim||targetanimation==staffspinhitanim||targetanimation==staffgroundsmashanim||targetanimation==spinkickreversalanim||targetanimation==sweepreversalanim||targetanimation==lowkickanim||targetanimation==sweepreversedanim||targetanimation==rabbitkickreversalanim||targetanimation==rabbitkickreversedanim||targetanimation==jumpreversalanim||targetanimation==jumpreversedanim){
+ if(animTarget==spinkickanim||animTarget==staffspinhitreversalanim||animTarget==staffspinhitreversedanim||animTarget==staffhitreversalanim||animTarget==staffhitreversedanim||animTarget==hurtidleanim||animTarget==winduppunchanim||animTarget==swordslashreversalanim||animTarget==swordslashreversedanim||animTarget==knifeslashreversalanim||animTarget==knifeslashreversedanim||animTarget==knifethrowanim||animTarget==knifefollowanim||animTarget==knifefollowedanim||animTarget==killanim||animTarget==dropkickanim||animTarget==upunchanim||animTarget==knifeslashstartanim||animTarget==swordslashanim||animTarget==staffhitanim||animTarget==staffspinhitanim||animTarget==staffgroundsmashanim||animTarget==spinkickreversalanim||animTarget==sweepreversalanim||animTarget==lowkickanim||animTarget==sweepreversedanim||animTarget==rabbitkickreversalanim||animTarget==rabbitkickreversedanim||animTarget==jumpreversalanim||animTarget==jumpreversedanim){
//close hands and yell
if(righthandmorphend!=1&&righthandmorphness==targetrighthandmorphness){
righthandmorphness=0;
targetheadmorphness=1;
}
}
- /*
- if(speechdelay>.25){
- if(headmorphend!=2)headmorphness=0;
- headmorphend=2;
- targetheadmorphness=1;
- }
- */
+
bool behind;
behind=0;
if(hasvictim){
}
}
- if(!dead&&targetanimation!=hurtidleanim)
- if(behind||targetanimation==killanim||targetanimation==knifethrowanim||targetanimation==knifefollowanim||targetanimation==spinkickreversalanim||targetanimation==rabbitkickreversedanim||targetanimation==jumpreversedanim){
+ if(!dead&&animTarget!=hurtidleanim)
+ if(behind||animTarget==killanim||animTarget==knifethrowanim||animTarget==knifefollowanim||animTarget==spinkickreversalanim||animTarget==rabbitkickreversedanim||animTarget==jumpreversedanim){
if(headmorphend!=4||headmorphness==targetheadmorphness){
headmorphend=4;
//headmorphness=1;
}
if(weaponactive!=-1){
- if(weapons.type[weaponids[weaponactive]]!=staff){
+ if(weapons[weaponids[weaponactive]].getType()!=staff){
righthandmorphstart=1;
righthandmorphend=1;
}
- if(weapons.type[weaponids[weaponactive]]==staff){
+ if(weapons[weaponids[weaponactive]].getType()==staff){
righthandmorphstart=2;
righthandmorphend=2;
}
terrainnormal=terrain.getNormal(coords.x,coords.z);
- if(animation[targetanimation].attack!=reversal){
+ if(animation[animTarget].attack!=reversal){
if(!isnormal(coords.x))
coords=oldcoords;
oldcoords=coords;
flatfacing=0;
flatfacing.z=1;
- flatfacing=DoRotation(flatfacing,0,rotation,0);
+ flatfacing=DoRotation(flatfacing,0,yaw,0);
facing=flatfacing;
ReflectVector(&facing,terrainnormal);
Normalise(&facing);
- if(isRun()||targetanimation==sneakanim||targetanimation==rollanim||targetanimation==walkanim){
+ if(isRun()||animTarget==sneakanim||animTarget==rollanim||animTarget==walkanim){
if(onterrain)targettilt2=-facing.y*20;
else targettilt2=0;
}
onterrain=0;
- if(!isRun()&&!animation[targetanimation].attack&&targetanimation!=getupfromfrontanim&&targetanimation!=getupfrombackanim&&targetanimation!=sneakanim)targettilt2=0;
- if(targetanimation==jumpupanim||targetanimation==jumpdownanim||isFlip()){
+ if(!isRun()&&!animation[animTarget].attack&&animTarget!=getupfromfrontanim&&animTarget!=getupfrombackanim&&animTarget!=sneakanim)targettilt2=0;
+ if(animTarget==jumpupanim||animTarget==jumpdownanim||isFlip()){
flatvelocity=velocity;
flatvelocity.y=0;
flatvelspeed=findLength(&flatvelocity);
else if(tilt2<targettilt2){
tilt2+=multiplier*400;
}
- if(!animation[targetanimation].attack&&targetanimation!=getupfrombackanim&&targetanimation!=getupfromfrontanim){
+ if(!animation[animTarget].attack&&animTarget!=getupfrombackanim&&animTarget!=getupfromfrontanim){
if(tilt2>25)tilt2=25;
if(tilt2<-25)tilt2=-25;
}
}
//Running velocity
- //if(!creature==wolftype||targetanimation==rabbitkickanim)
- if(targetanimation==rabbittackleanim){
+ //if(!creature==wolftype||animTarget==rabbitkickanim)
+ if(animTarget==rabbittackleanim){
velocity+=facing*multiplier*speed*700*scale;
velspeed=findLength(&velocity);
if(velspeed>speed*65*scale){
velspeed=findLength(&velocity);
velocity=flatfacing*velspeed;
}
- if(targetanimation!=rabbitrunninganim&&targetanimation!=wolfrunninganim){
- if(isRun()||targetanimation==rabbitkickanim){
+ if(animTarget!=rabbitrunninganim&&animTarget!=wolfrunninganim){
+ if(isRun()||animTarget==rabbitkickanim){
velocity+=facing*multiplier*speed*700*scale;
velspeed=findLength(&velocity);
if(velspeed>speed*45*scale){
velocity=flatfacing*velspeed;
}
- if(targetanimation==rollanim&&animation[targetanimation].label[targetframe]!=6){
+ if(animTarget==rollanim&&animation[animTarget].label[frameTarget]!=6){
velocity+=facing*multiplier*speed*700*scale;
velspeed=findLength(&velocity);
if(velspeed>speed*45*scale){
}
- /*if(currentanimation==rollanim&&(isCrouch()||isIdle())){
+ /*if(animCurrent==rollanim&&(isCrouch()||isIdle())){
velocity+=facing*multiplier*speed*700*scale;
velspeed=findLength(&velocity);
if(velspeed>speed*25*scale){
velocity=flatfacing*velspeed;
}*/
- if(targetanimation==sneakanim||targetanimation==walkanim){
+ if(animTarget==sneakanim||animTarget==walkanim){
velocity+=facing*multiplier*speed*700*scale;
velspeed=findLength(&velocity);
if(velspeed>speed*12*scale){
velocity=flatfacing*velspeed;
}
- if((targetanimation==fightidleanim||targetanimation==knifefightidleanim)&&(currentanimation==bounceidleanim||currentanimation==hurtidleanim)){
+ if((animTarget==fightidleanim||animTarget==knifefightidleanim)&&(animCurrent==bounceidleanim||animCurrent==hurtidleanim)){
velocity+=facing*multiplier*speed*700*scale;
velspeed=findLength(&velocity);
if(velspeed>speed*2*scale){
}
- if((targetanimation==bounceidleanim||currentanimation==hurtidleanim)&&(currentanimation==fightidleanim||currentanimation==knifefightidleanim)){
+ if((animTarget==bounceidleanim||animCurrent==hurtidleanim)&&(animCurrent==fightidleanim||animCurrent==knifefightidleanim)){
velocity-=facing*multiplier*speed*700*scale;
velspeed=findLength(&velocity);
if(velspeed>speed*2*scale){
velocity=flatfacing*velspeed*-1;
}
- if(targetanimation==fightsidestep){
+ if(animTarget==fightsidestep){
velocity+=DoRotation(facing*multiplier*speed*700*scale,0,-90,0);
velspeed=findLength(&velocity);
if(velspeed>speed*12*scale){
velocity=DoRotation(flatfacing*velspeed,0,-90,0);
}
- if(targetanimation==staggerbackhighanim){
+ if(animTarget==staggerbackhighanim){
coords-=facing*multiplier*speed*16*scale;
velocity=0;
}
- if(targetanimation==staggerbackhardanim&&animation[staggerbackhardanim].label[targetframe]!=6){
+ if(animTarget==staggerbackhardanim&&animation[staggerbackhardanim].label[frameTarget]!=6){
coords-=facing*multiplier*speed*20*scale;
velocity=0;
}
- if(targetanimation==backhandspringanim){
+ if(animTarget==backhandspringanim){
//coords-=facing*multiplier*50*scale;
velocity+=facing*multiplier*speed*700*scale*-1;
velspeed=findLength(&velocity);
velspeed=findLength(&velocity);
velocity=flatfacing*velspeed*-1;
}
- if(targetanimation==dodgebackanim){
+ if(animTarget==dodgebackanim){
//coords-=facing*multiplier*50*scale;
velocity+=facing*multiplier*speed*700*scale*-1;
velspeed=findLength(&velocity);
velocity=flatfacing*velspeed*-1;
}
- if(targetanimation==jumpupanim||targetanimation==jumpdownanim||isFlip()){
+ if(animTarget==jumpupanim||animTarget==jumpdownanim||isFlip()){
velspeed=findLength(&velocity);
}
- if(targetanimation==jumpupanim||targetanimation==jumpdownanim||isFlip()){
+ if(animTarget==jumpupanim||animTarget==jumpdownanim||isFlip()){
velocity.y+=gravity*multiplier;
}
- if(targetanimation!=climbanim&&targetanimation!=hanganim&&!isWallJump())coords+=velocity*multiplier;
+ if(animTarget!=climbanim&&animTarget!=hanganim&&!isWallJump())coords+=velocity*multiplier;
- if(coords.y<terrain.getHeight(coords.x,coords.z)&&(targetanimation==jumpdownanim||targetanimation==jumpupanim||isFlip())){
- if(isFlip()&&animation[targetanimation].label[targetframe]==7)RagDoll(0);
+ if(coords.y<terrain.getHeight(coords.x,coords.z)&&(animTarget==jumpdownanim||animTarget==jumpupanim||isFlip())){
+ if(isFlip()&&animation[animTarget].label[frameTarget]==7)RagDoll(0);
- if(targetanimation==jumpupanim){jumppower=-4;targetanimation=getIdle();}
+ if(animTarget==jumpupanim){jumppower=-4;animTarget=getIdle();}
target=0;
- targetframe=0;
+ frameTarget=0;
onterrain=1;
if(id==0){
- OPENAL_SetPaused(channels[whooshsound], true);
+ pause_sound(whooshsound);
OPENAL_SetVolume(channels[whooshsound], 0);
}
- if(targetanimation==jumpdownanim||isFlip()){
+ if(animTarget==jumpdownanim||isFlip()){
if(isFlip())jumppower=-4;
- targetanimation=getLanding();
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- PlaySoundEx( landsound, samp[landsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[landsound], gLoc, vel);
- OPENAL_SetVolume(channels[landsound], 128);
- OPENAL_SetPaused(channels[landsound], false);
+ animTarget=getLanding();
+ emit_sound_at(landsound, coords, 128.);
if(id==0){
envsound[numenvsounds]=coords;
}
}
- if(targetanimation!=jumpupanim&&targetanimation!=jumpdownanim&&!isFlip()&&targetanimation!=climbanim&&targetanimation!=hanganim&&!isWallJump())coords.y+=gravity*multiplier*2;
- if(targetanimation!=jumpupanim&&targetanimation!=jumpdownanim&&!isFlip()&&coords.y<terrain.getHeight(coords.x,coords.z)){
+ if(animTarget!=jumpupanim&&animTarget!=jumpdownanim&&!isFlip()&&animTarget!=climbanim&&animTarget!=hanganim&&!isWallJump())coords.y+=gravity*multiplier*2;
+ if(animTarget!=jumpupanim&&animTarget!=jumpdownanim&&!isFlip()&&coords.y<terrain.getHeight(coords.x,coords.z)){
coords.y=terrain.getHeight(coords.x,coords.z);
onterrain=1;
}
- if(isIdle()||targetanimation==drawrightanim||targetanimation==drawleftanim||targetanimation==crouchdrawrightanim||targetanimation==crouchstabanim||targetanimation==swordgroundstabanim||isStop()||targetanimation==removeknifeanim||targetanimation==crouchremoveknifeanim||isLanding()||isCrouch()||animation[targetanimation].attack||(targetanimation==rollanim&&animation[targetanimation].label[targetframe]==6)){
+ if(isIdle()||animTarget==drawrightanim||animTarget==drawleftanim||animTarget==crouchdrawrightanim||animTarget==crouchstabanim||animTarget==swordgroundstabanim||isStop()||animTarget==removeknifeanim||animTarget==crouchremoveknifeanim||isLanding()||isCrouch()||animation[animTarget].attack||(animTarget==rollanim&&animation[animTarget].label[frameTarget]==6)){
velspeed=findLength(&velocity);
velocity.y=0;
if(velspeed<multiplier*300*scale){
if(skiddingdelay<0)skiddingdelay+=multiplier;
if(skiddingdelay>.02&&!forwardkeydown&&!backkeydown&&!leftkeydown&&!rightkeydown&&!jumpkeydown&&isLanding()&&!landhard){
skiddingdelay=-1;
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
if(!onterrain||environment==grassyenvironment){
- PlaySoundEx( skidsound, samp[skidsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[skidsound], gLoc, vel);
- OPENAL_SetVolume(channels[skidsound], 128*velspeed/10);
- OPENAL_SetPaused(channels[skidsound], false);
+ emit_sound_at(skidsound, coords, 128*velspeed/10);
}
else {
- PlaySoundEx( snowskidsound, samp[snowskidsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[snowskidsound], gLoc, vel);
- OPENAL_SetVolume(channels[snowskidsound], 128*velspeed/10);
- OPENAL_SetPaused(channels[snowskidsound], false);
+ emit_sound_at(snowskidsound, coords, 128*velspeed/10);
}
}
- if(animation[targetanimation].attack==normalattack&&targetanimation!=rabbitkickanim&&!victim->skeleton.free){
+ if(animation[animTarget].attack==normalattack&&animTarget!=rabbitkickanim&&!victim->skeleton.free){
terrainnormal=victim->coords-coords;
Normalise(&terrainnormal);
- targetrotation=-asin(0-terrainnormal.x);
- targetrotation*=360/6.28;
- if(terrainnormal.z<0)targetrotation=180-targetrotation;
+ targetyaw=-asin(0-terrainnormal.x);
+ targetyaw*=360/6.28;
+ if(terrainnormal.z<0)targetyaw=180-targetyaw;
targettilt2=-asin(terrainnormal.y)*360/6.28;//*-70;
}
- if(animation[targetanimation].attack==reversal&&targetanimation!=rabbittacklinganim){
- targetrotation=victim->targetrotation;
+ if(animation[animTarget].attack==reversal&&animTarget!=rabbittacklinganim){
+ targetyaw=victim->targetyaw;
}
- if(targetanimation==rabbittacklinganim){
+ if(animTarget==rabbittacklinganim){
coords=victim->coords;
}
}
midterrain=0;
midterrain.x=terrain.size*terrain.scale/2;
midterrain.z=terrain.size*terrain.scale/2;
- if(findDistancefastflat(&coords,&midterrain)>(terrain.size*terrain.scale/2-viewdistance)*(terrain.size*terrain.scale/2-viewdistance)){
+ if(distsqflat(&coords,&midterrain)>(terrain.size*terrain.scale/2-viewdistance)*(terrain.size*terrain.scale/2-viewdistance)){
XYZ tempposit;
tempposit=coords-midterrain;
tempposit.y=0;
int Person::DrawSkeleton(){
int oldplayerdetail;
- if((frustum.SphereInFrustum(coords.x,coords.y+scale*3,coords.z,scale*8)&&findDistancefast(&viewer,&coords)<viewdistance*viewdistance)||skeleton.free==3){
+ if((frustum.SphereInFrustum(coords.x,coords.y+scale*3,coords.z,scale*8)&&distsq(&viewer,&coords)<viewdistance*viewdistance)||skeleton.free==3){
if(onterrain&&(isIdle()||isCrouch()||wasIdle()||wasCrouch())&&!skeleton.free){
calcrot=1;
}
XYZ terrainlight;
float terrainheight;
float distance;
- if(!isnormal(rotation))rotation=0;
+ if(!isnormal(yaw))yaw=0;
if(!isnormal(tilt))tilt=0;
if(!isnormal(tilt2))tilt2=0;
oldplayerdetail=playerdetail;
playerdetail=0;
- if(findDistancefast(&viewer,&coords)<viewdistance*viewdistance/32&&detail==2){
+ if(distsq(&viewer,&coords)<viewdistance*viewdistance/32&&detail==2){
playerdetail=1;
}
- if(findDistancefast(&viewer,&coords)<viewdistance*viewdistance/128&&detail==1){
+ if(distsq(&viewer,&coords)<viewdistance*viewdistance/128&&detail==1){
playerdetail=1;
}
- if(findDistancefast(&viewer,&coords)<viewdistance*viewdistance/256&&(detail!=1&&detail!=2)){
+ if(distsq(&viewer,&coords)<viewdistance*viewdistance/256&&(detail!=1&&detail!=2)){
playerdetail=1;
}
if(id==0)
static float M[16];
static int i,j,k;
static int weaponattachmuscle;
- static int weaponrotatemuscle,weaponrotatemuscle2;
+ static int weaponrotatemuscle;
static XYZ weaponpoint;
static int start,endthing;
if((dead!=2||skeleton.free!=2)&&updatedelay<=0){
if(!isSleeping()&&!isSitting()){
- if(onterrain&&((isIdle()||isCrouch()||isLanding()||isLandhard()||targetanimation==drawrightanim||targetanimation==drawleftanim||targetanimation==crouchdrawrightanim)&&(wasIdle()||wasCrouch()||wasLanding()||wasLandhard()||currentanimation==drawrightanim||currentanimation==drawleftanim||currentanimation==crouchdrawrightanim))&&!skeleton.free){
+ if(onterrain&&((isIdle()||isCrouch()||isLanding()||isLandhard()||animTarget==drawrightanim||animTarget==drawleftanim||animTarget==crouchdrawrightanim)&&(wasIdle()||wasCrouch()||wasLanding()||wasLandhard()||animCurrent==drawrightanim||animCurrent==drawleftanim||animCurrent==crouchdrawrightanim))&&!skeleton.free){
XYZ point,newpoint,change,change2;
- point=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,rotation,0)*scale+coords;
+ point=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,yaw,0)*scale+coords;
heightleft=terrain.getHeight(point.x,point.z)+.04;
point.y=heightleft;
change=skeleton.joints[skeleton.jointlabels[leftankle]].position-skeleton.joints[skeleton.jointlabels[leftfoot]].position;
change2=skeleton.joints[skeleton.jointlabels[leftknee]].position-skeleton.joints[skeleton.jointlabels[leftfoot]].position;
- skeleton.joints[skeleton.jointlabels[leftfoot]].position=DoRotation((point-coords)/scale,0,-rotation,0);
+ skeleton.joints[skeleton.jointlabels[leftfoot]].position=DoRotation((point-coords)/scale,0,-yaw,0);
skeleton.joints[skeleton.jointlabels[leftankle]].position=skeleton.joints[skeleton.jointlabels[leftfoot]].position+change;
skeleton.joints[skeleton.jointlabels[leftknee]].position=(skeleton.joints[skeleton.jointlabels[leftfoot]].position+change2)/2+(skeleton.joints[skeleton.jointlabels[leftknee]].position)/2;
- point=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,rotation,0)*scale+coords;
+ point=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,yaw,0)*scale+coords;
heightright=terrain.getHeight(point.x,point.z)+.04;
point.y=heightright;
change=skeleton.joints[skeleton.jointlabels[rightankle]].position-skeleton.joints[skeleton.jointlabels[rightfoot]].position;
change2=skeleton.joints[skeleton.jointlabels[rightknee]].position-skeleton.joints[skeleton.jointlabels[rightfoot]].position;
- skeleton.joints[skeleton.jointlabels[rightfoot]].position=DoRotation((point-coords)/scale,0,-rotation,0);
+ skeleton.joints[skeleton.jointlabels[rightfoot]].position=DoRotation((point-coords)/scale,0,-yaw,0);
skeleton.joints[skeleton.jointlabels[rightankle]].position=skeleton.joints[skeleton.jointlabels[rightfoot]].position+change;
skeleton.joints[skeleton.jointlabels[rightknee]].position=(skeleton.joints[skeleton.jointlabels[rightfoot]].position+change2)/2+(skeleton.joints[skeleton.jointlabels[rightknee]].position)/2;
skeleton.DoConstraints(&coords,&scale);
if(creature==wolftype){
- point=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,rotation,0)*scale+coords;
+ point=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,yaw,0)*scale+coords;
heightleft=terrain.getHeight(point.x,point.z)+.04;
point.y=heightleft;
change=skeleton.joints[skeleton.jointlabels[leftankle]].position-skeleton.joints[skeleton.jointlabels[leftfoot]].position;
change2=skeleton.joints[skeleton.jointlabels[leftknee]].position-skeleton.joints[skeleton.jointlabels[leftfoot]].position;
- skeleton.joints[skeleton.jointlabels[leftfoot]].position=DoRotation((point-coords)/scale,0,-rotation,0);
+ skeleton.joints[skeleton.jointlabels[leftfoot]].position=DoRotation((point-coords)/scale,0,-yaw,0);
skeleton.joints[skeleton.jointlabels[leftankle]].position=skeleton.joints[skeleton.jointlabels[leftfoot]].position+change;
skeleton.joints[skeleton.jointlabels[leftknee]].position=(skeleton.joints[skeleton.jointlabels[leftfoot]].position+change2)/2+(skeleton.joints[skeleton.jointlabels[leftknee]].position)/2;
- point=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,rotation,0)*scale+coords;
+ point=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,yaw,0)*scale+coords;
heightright=terrain.getHeight(point.x,point.z)+.04;
point.y=heightright;
change=skeleton.joints[skeleton.jointlabels[rightankle]].position-skeleton.joints[skeleton.jointlabels[rightfoot]].position;
change2=skeleton.joints[skeleton.jointlabels[rightknee]].position-skeleton.joints[skeleton.jointlabels[rightfoot]].position;
- skeleton.joints[skeleton.jointlabels[rightfoot]].position=DoRotation((point-coords)/scale,0,-rotation,0);
+ skeleton.joints[skeleton.jointlabels[rightfoot]].position=DoRotation((point-coords)/scale,0,-yaw,0);
skeleton.joints[skeleton.jointlabels[rightankle]].position=skeleton.joints[skeleton.jointlabels[rightfoot]].position+change;
skeleton.joints[skeleton.jointlabels[rightknee]].position=(skeleton.joints[skeleton.jointlabels[rightfoot]].position+change2)/2+(skeleton.joints[skeleton.jointlabels[rightknee]].position)/2;
skeleton.DoConstraints(&coords,&scale);
}
}
- if(onterrain&&((isIdle()||isCrouch()||isLanding()||isLandhard()||targetanimation==drawrightanim||targetanimation==drawleftanim||targetanimation==crouchdrawrightanim)&&!(wasIdle()||wasCrouch()||wasLanding()||wasLandhard()||currentanimation==drawrightanim||currentanimation==drawleftanim||currentanimation==crouchdrawrightanim))&&!skeleton.free){
+ if(onterrain&&((isIdle()||isCrouch()||isLanding()||isLandhard()||animTarget==drawrightanim||animTarget==drawleftanim||animTarget==crouchdrawrightanim)&&!(wasIdle()||wasCrouch()||wasLanding()||wasLandhard()||animCurrent==drawrightanim||animCurrent==drawleftanim||animCurrent==crouchdrawrightanim))&&!skeleton.free){
XYZ point,newpoint,change,change2;
- point=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,rotation,0)*scale+coords;
+ point=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,yaw,0)*scale+coords;
heightleft=terrain.getHeight(point.x,point.z)+.04;
point.y=heightleft;
change=skeleton.joints[skeleton.jointlabels[leftankle]].position-skeleton.joints[skeleton.jointlabels[leftfoot]].position;
change2=skeleton.joints[skeleton.jointlabels[leftknee]].position-skeleton.joints[skeleton.jointlabels[leftfoot]].position;
- skeleton.joints[skeleton.jointlabels[leftfoot]].position=DoRotation((point-coords)/scale,0,-rotation,0)*target+skeleton.joints[skeleton.jointlabels[leftfoot]].position*(1-target);
+ skeleton.joints[skeleton.jointlabels[leftfoot]].position=DoRotation((point-coords)/scale,0,-yaw,0)*target+skeleton.joints[skeleton.jointlabels[leftfoot]].position*(1-target);
skeleton.joints[skeleton.jointlabels[leftankle]].position=skeleton.joints[skeleton.jointlabels[leftfoot]].position+change;
skeleton.joints[skeleton.jointlabels[leftknee]].position=(skeleton.joints[skeleton.jointlabels[leftfoot]].position+change2)/2+(skeleton.joints[skeleton.jointlabels[leftknee]].position)/2;
- point=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,rotation,0)*scale+coords;
+ point=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,yaw,0)*scale+coords;
heightright=terrain.getHeight(point.x,point.z)+.04;
point.y=heightright;
change=skeleton.joints[skeleton.jointlabels[rightankle]].position-skeleton.joints[skeleton.jointlabels[rightfoot]].position;
change2=skeleton.joints[skeleton.jointlabels[rightknee]].position-skeleton.joints[skeleton.jointlabels[rightfoot]].position;
- skeleton.joints[skeleton.jointlabels[rightfoot]].position=DoRotation((point-coords)/scale,0,-rotation,0)*target+skeleton.joints[skeleton.jointlabels[rightfoot]].position*(1-target);
+ skeleton.joints[skeleton.jointlabels[rightfoot]].position=DoRotation((point-coords)/scale,0,-yaw,0)*target+skeleton.joints[skeleton.jointlabels[rightfoot]].position*(1-target);
skeleton.joints[skeleton.jointlabels[rightankle]].position=skeleton.joints[skeleton.jointlabels[rightfoot]].position+change;
skeleton.joints[skeleton.jointlabels[rightknee]].position=(skeleton.joints[skeleton.jointlabels[rightfoot]].position+change2)/2+(skeleton.joints[skeleton.jointlabels[rightknee]].position)/2;
skeleton.DoConstraints(&coords,&scale);
if(creature==wolftype){
- point=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,rotation,0)*scale+coords;
+ point=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,yaw,0)*scale+coords;
heightleft=terrain.getHeight(point.x,point.z)+.04;
point.y=heightleft;
change=skeleton.joints[skeleton.jointlabels[leftankle]].position-skeleton.joints[skeleton.jointlabels[leftfoot]].position;
change2=skeleton.joints[skeleton.jointlabels[leftknee]].position-skeleton.joints[skeleton.jointlabels[leftfoot]].position;
- skeleton.joints[skeleton.jointlabels[leftfoot]].position=DoRotation((point-coords)/scale,0,-rotation,0)*target+skeleton.joints[skeleton.jointlabels[leftfoot]].position*(1-target);
+ skeleton.joints[skeleton.jointlabels[leftfoot]].position=DoRotation((point-coords)/scale,0,-yaw,0)*target+skeleton.joints[skeleton.jointlabels[leftfoot]].position*(1-target);
skeleton.joints[skeleton.jointlabels[leftankle]].position=skeleton.joints[skeleton.jointlabels[leftfoot]].position+change;
skeleton.joints[skeleton.jointlabels[leftknee]].position=(skeleton.joints[skeleton.jointlabels[leftfoot]].position+change2)/2+(skeleton.joints[skeleton.jointlabels[leftknee]].position)/2;
- point=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,rotation,0)*scale+coords;
+ point=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,yaw,0)*scale+coords;
heightright=terrain.getHeight(point.x,point.z)+.04;
point.y=heightright;
change=skeleton.joints[skeleton.jointlabels[rightankle]].position-skeleton.joints[skeleton.jointlabels[rightfoot]].position;
change2=skeleton.joints[skeleton.jointlabels[rightknee]].position-skeleton.joints[skeleton.jointlabels[rightfoot]].position;
- skeleton.joints[skeleton.jointlabels[rightfoot]].position=DoRotation((point-coords)/scale,0,-rotation,0)*target+skeleton.joints[skeleton.jointlabels[rightfoot]].position*(1-target);
+ skeleton.joints[skeleton.jointlabels[rightfoot]].position=DoRotation((point-coords)/scale,0,-yaw,0)*target+skeleton.joints[skeleton.jointlabels[rightfoot]].position*(1-target);
skeleton.joints[skeleton.jointlabels[rightankle]].position=skeleton.joints[skeleton.jointlabels[rightfoot]].position+change;
skeleton.joints[skeleton.jointlabels[rightknee]].position=(skeleton.joints[skeleton.jointlabels[rightfoot]].position+change2)/2+(skeleton.joints[skeleton.jointlabels[rightknee]].position)/2;
skeleton.DoConstraints(&coords,&scale);
}
}
- if(onterrain&&(!(isIdle()||isCrouch()||isLanding()||isLandhard()||targetanimation==drawrightanim||targetanimation==drawleftanim||targetanimation==crouchdrawrightanim)&&(wasIdle()||wasCrouch()||wasLanding()||wasLandhard()||currentanimation==drawrightanim||currentanimation==drawleftanim||currentanimation==crouchdrawrightanim))&&!skeleton.free){
+ if(onterrain&&(!(isIdle()||isCrouch()||isLanding()||isLandhard()||animTarget==drawrightanim||animTarget==drawleftanim||animTarget==crouchdrawrightanim)&&(wasIdle()||wasCrouch()||wasLanding()||wasLandhard()||animCurrent==drawrightanim||animCurrent==drawleftanim||animCurrent==crouchdrawrightanim))&&!skeleton.free){
XYZ point,newpoint,change,change2;
- point=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,rotation,0)*scale+coords;
+ point=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,yaw,0)*scale+coords;
heightleft=terrain.getHeight(point.x,point.z)+.04;
point.y=heightleft;
change=skeleton.joints[skeleton.jointlabels[leftankle]].position-skeleton.joints[skeleton.jointlabels[leftfoot]].position;
change2=skeleton.joints[skeleton.jointlabels[leftknee]].position-skeleton.joints[skeleton.jointlabels[leftfoot]].position;
- skeleton.joints[skeleton.jointlabels[leftfoot]].position=DoRotation((point-coords)/scale,0,-rotation,0)*(1-target)+skeleton.joints[skeleton.jointlabels[leftfoot]].position*target;
+ skeleton.joints[skeleton.jointlabels[leftfoot]].position=DoRotation((point-coords)/scale,0,-yaw,0)*(1-target)+skeleton.joints[skeleton.jointlabels[leftfoot]].position*target;
skeleton.joints[skeleton.jointlabels[leftankle]].position=skeleton.joints[skeleton.jointlabels[leftfoot]].position+change;
skeleton.joints[skeleton.jointlabels[leftknee]].position=(skeleton.joints[skeleton.jointlabels[leftfoot]].position+change2)/2+(skeleton.joints[skeleton.jointlabels[leftknee]].position)/2;
- point=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,rotation,0)*scale+coords;
+ point=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,yaw,0)*scale+coords;
heightright=terrain.getHeight(point.x,point.z)+.04;
point.y=heightright;
change=skeleton.joints[skeleton.jointlabels[rightankle]].position-skeleton.joints[skeleton.jointlabels[rightfoot]].position;
change2=skeleton.joints[skeleton.jointlabels[rightknee]].position-skeleton.joints[skeleton.jointlabels[rightfoot]].position;
- skeleton.joints[skeleton.jointlabels[rightfoot]].position=DoRotation((point-coords)/scale,0,-rotation,0)*(1-target)+skeleton.joints[skeleton.jointlabels[rightfoot]].position*target;
+ skeleton.joints[skeleton.jointlabels[rightfoot]].position=DoRotation((point-coords)/scale,0,-yaw,0)*(1-target)+skeleton.joints[skeleton.jointlabels[rightfoot]].position*target;
skeleton.joints[skeleton.jointlabels[rightankle]].position=skeleton.joints[skeleton.jointlabels[rightfoot]].position+change;
skeleton.joints[skeleton.jointlabels[rightknee]].position=(skeleton.joints[skeleton.jointlabels[rightfoot]].position+change2)/2+(skeleton.joints[skeleton.jointlabels[rightknee]].position)/2;
skeleton.DoConstraints(&coords,&scale);
if(creature==wolftype){
- point=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,rotation,0)*scale+coords;
+ point=DoRotation(skeleton.joints[skeleton.jointlabels[leftfoot]].position,0,yaw,0)*scale+coords;
heightleft=terrain.getHeight(point.x,point.z)+.04;
point.y=heightleft;
change=skeleton.joints[skeleton.jointlabels[leftankle]].position-skeleton.joints[skeleton.jointlabels[leftfoot]].position;
change2=skeleton.joints[skeleton.jointlabels[leftknee]].position-skeleton.joints[skeleton.jointlabels[leftfoot]].position;
- skeleton.joints[skeleton.jointlabels[leftfoot]].position=DoRotation((point-coords)/scale,0,-rotation,0)*(1-target)+skeleton.joints[skeleton.jointlabels[leftfoot]].position*target;
+ skeleton.joints[skeleton.jointlabels[leftfoot]].position=DoRotation((point-coords)/scale,0,-yaw,0)*(1-target)+skeleton.joints[skeleton.jointlabels[leftfoot]].position*target;
skeleton.joints[skeleton.jointlabels[leftankle]].position=skeleton.joints[skeleton.jointlabels[leftfoot]].position+change;
skeleton.joints[skeleton.jointlabels[leftknee]].position=(skeleton.joints[skeleton.jointlabels[leftfoot]].position+change2)/2+(skeleton.joints[skeleton.jointlabels[leftknee]].position)/2;
- point=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,rotation,0)*scale+coords;
+ point=DoRotation(skeleton.joints[skeleton.jointlabels[rightfoot]].position,0,yaw,0)*scale+coords;
heightright=terrain.getHeight(point.x,point.z)+.04;
point.y=heightright;
change=skeleton.joints[skeleton.jointlabels[rightankle]].position-skeleton.joints[skeleton.jointlabels[rightfoot]].position;
change2=skeleton.joints[skeleton.jointlabels[rightknee]].position-skeleton.joints[skeleton.jointlabels[rightfoot]].position;
- skeleton.joints[skeleton.jointlabels[rightfoot]].position=DoRotation((point-coords)/scale,0,-rotation,0)*(1-target)+skeleton.joints[skeleton.jointlabels[rightfoot]].position*target;
+ skeleton.joints[skeleton.jointlabels[rightfoot]].position=DoRotation((point-coords)/scale,0,-yaw,0)*(1-target)+skeleton.joints[skeleton.jointlabels[rightfoot]].position*target;
skeleton.joints[skeleton.jointlabels[rightankle]].position=skeleton.joints[skeleton.jointlabels[rightfoot]].position+change;
skeleton.joints[skeleton.jointlabels[rightknee]].position=(skeleton.joints[skeleton.jointlabels[rightfoot]].position+change2)/2+(skeleton.joints[skeleton.jointlabels[rightknee]].position)/2;
skeleton.DoConstraints(&coords,&scale);
}
}
}
- if(!skeleton.free&&(!animation[targetanimation].attack&&targetanimation!=getupfrombackanim&&((targetanimation!=rollanim&&!isFlip())||animation[targetanimation].label[targetframe]==6)&&targetanimation!=getupfromfrontanim&&targetanimation!=wolfrunninganim&&targetanimation!=rabbitrunninganim&&targetanimation!=backhandspringanim&&targetanimation!=walljumpfrontanim&&targetanimation!=hurtidleanim&&!isLandhard()&&!isSleeping()))
+ if(!skeleton.free&&(!animation[animTarget].attack&&animTarget!=getupfrombackanim&&((animTarget!=rollanim&&!isFlip())||animation[animTarget].label[frameTarget]==6)&&animTarget!=getupfromfrontanim&&animTarget!=wolfrunninganim&&animTarget!=rabbitrunninganim&&animTarget!=backhandspringanim&&animTarget!=walljumpfrontanim&&animTarget!=hurtidleanim&&!isLandhard()&&!isSleeping()))
DoHead();
else {
- targetheadrotation=-targetrotation;
- targetheadrotation2=0;
- if(animation[targetanimation].attack==3)targetheadrotation+=180;
+ targetheadyaw=-targetyaw;
+ targetheadpitch=0;
+ if(animation[animTarget].attack==3)targetheadyaw+=180;
}
for(i=0;i<skeleton.drawmodel.vertexNum;i++){
skeleton.drawmodel.vertex[i]=0;
start=tailmorphstart;
endthing=tailmorphend;
}
- if(calcrot)skeleton.FindRotationMuscle(i,targetanimation);
+ if(calcrot)skeleton.FindRotationMuscle(i,animTarget);
mid=(skeleton.muscles[i].parent1->position+skeleton.muscles[i].parent2->position)/2;
glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix
glPushMatrix();
skeleton.muscles[i].lastrotate3=skeleton.muscles[i].rotate3;
glRotatef(-skeleton.muscles[i].lastrotate3,0,1,0);
- /*
- if(!isnormal(proportionbody.x)||!isnormal(proportionbody.y)||!isnormal(proportionbody.z)){
- proportionbody=1;
- proportionweird=1;
- }
- if(!isnormal(proportionarms.x)||!isnormal(proportionarms.y)||!isnormal(proportionarms.z)){
- proportionarms=1;
- proportionweird=1;
- }
- if(!isnormal(proportionhead.x)||!isnormal(proportionhead.y)||!isnormal(proportionhead.z)){
- proportionhead=1;
- proportionweird=1;
- }
- if(!isnormal(proportionlegs.x)||!isnormal(proportionlegs.y)||!isnormal(proportionlegs.z)){
- proportionlegs=1;
- proportionweird=1;
- }*/
if(playerdetail||skeleton.free==3)
{
for(j=0;j<skeleton.muscles[i].numvertices;j++)
{
- /*if(!isnormal(skeleton.model[start].vertex[skeleton.muscles[i].vertices[j]].x))vertexweird[0]=1;
- if(!isnormal(skeleton.model[start].vertex[skeleton.muscles[i].vertices[j]].y))vertexweird[1]=1;
- if(!isnormal(skeleton.model[start].vertex[skeleton.muscles[i].vertices[j]].z))vertexweird[2]=1;
- if(!isnormal(skeleton.model[endthing].vertex[skeleton.muscles[i].vertices[j]].x))vertexweird[3]=1;
- if(!isnormal(skeleton.model[endthing].vertex[skeleton.muscles[i].vertices[j]].y))vertexweird[4]=1;
- if(!isnormal(skeleton.model[endthing].vertex[skeleton.muscles[i].vertices[j]].z))vertexweird[5]=1;
- if(skeleton.muscles[i].vertices[j]<skeleton.model[start].vertexNum&&skeleton.muscles[i].vertices[j]>=0){*/
glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix
glPushMatrix();
if(skeleton.muscles[i].parent1->label==abdomen||skeleton.muscles[i].parent2->label==abdomen)
(skeleton.model[start].vertex[skeleton.muscles[i].vertices[j]].z*(1-morphness)+skeleton.model[endthing].vertex[skeleton.muscles[i].vertices[j]].z*morphness)*proportionhead.z);
glGetFloatv(GL_MODELVIEW_MATRIX,M);
//if(!isnormal(M[12])||!isnormal(M[13])||!isnormal(M[14]))test=0;
- //if(isnormal(M[12])&&isnormal(M[13])&&isnormal(M[14])){
//if(!isnormal(scale))test=1;
- //if(isnormal(scale)){
skeleton.drawmodel.vertex[skeleton.muscles[i].vertices[j]].x=M[12]*scale;
skeleton.drawmodel.vertex[skeleton.muscles[i].vertices[j]].y=M[13]*scale;
skeleton.drawmodel.vertex[skeleton.muscles[i].vertices[j]].z=M[14]*scale;
//test=2;
- //}
- //}
glPopMatrix();
- //}
}
}
if(!playerdetail||skeleton.free==3)
{
for(j=0;j<skeleton.muscles[i].numverticeslow;j++)
{
- //if(skeleton.muscles[i].verticeslow[j]<skeleton.modellow.vertexNum&&skeleton.muscles[i].verticeslow[j]>=0){
glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix
glPushMatrix();
if(skeleton.muscles[i].parent1->label==abdomen||skeleton.muscles[i].parent2->label==abdomen)
skeleton.drawmodellow.vertex[skeleton.muscles[i].verticeslow[j]].y=M[13]*scale;
skeleton.drawmodellow.vertex[skeleton.muscles[i].verticeslow[j]].z=M[14]*scale;
glPopMatrix();
- //}
}
}
glPopMatrix();
}
updatedelay=1+(float)(Random()%100)/1000;
}
- if(skeleton.free!=2&&(skeleton.free==1||skeleton.free==3||id==0||(normalsupdatedelay<=0)||targetanimation==getupfromfrontanim||targetanimation==getupfrombackanim||currentanimation==getupfromfrontanim||currentanimation==getupfrombackanim)){
+ if(skeleton.free!=2&&(skeleton.free==1||skeleton.free==3||id==0||(normalsupdatedelay<=0)||animTarget==getupfromfrontanim||animTarget==getupfrombackanim||animCurrent==getupfromfrontanim||animCurrent==getupfrombackanim)){
normalsupdatedelay=1;
if(playerdetail||skeleton.free==3)skeleton.drawmodel.CalculateNormals(0);
if(!playerdetail||skeleton.free==3)skeleton.drawmodellow.CalculateNormals(0);
if(!skeleton.free)glTranslatef(coords.x,coords.y-.02,coords.z);
if(skeleton.free)glTranslatef(coords.x,coords.y-.02,coords.z);
if(!skeleton.free)glTranslatef(offset.x*scale,offset.y*scale,offset.z*scale);
- if(!skeleton.free)glRotatef(rotation,0,1,0);
+ if(!skeleton.free)glRotatef(yaw,0,1,0);
if(showpoints){
glPointSize(5);
glColor4f(.4,1,.4,1);
}
terrainlight=terrain.getLighting(coords.x,coords.z);
- distance=findDistancefast(&viewer,&coords);
+ distance=distsq(&viewer,&coords);
distance=(viewdistance*viewdistance-(distance-(viewdistance*viewdistance*fadestart))*(1/(1-fadestart)))/viewdistance/viewdistance;
if(distance>1)distance=1;
if(distance>0){
glEnable(GL_LIGHTING);
glEnable(GL_BLEND);
if(canattack&&cananger)
- if(animation[targetanimation].attack==normalattack||animation[targetanimation].attack==reversed){
+ if(animation[animTarget].attack==normalattack||animation[animTarget].attack==reversed){
glDisable(GL_TEXTURE_2D);
glColor4f(1,0,0,0.8);
}
else skeleton.drawmodellow.drawdifftex(skeleton.drawmodel.textureptr);
}
- if(!(animation[targetanimation].attack==normalattack||animation[targetanimation].attack==reversed))
+ if(!(animation[animTarget].attack==normalattack||animation[animTarget].attack==reversed))
if(tutoriallevel&&id!=0){
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glEnable(GL_LIGHTING);
glEnable(GL_BLEND);
if(canattack&&cananger)
- if(animation[targetanimation].attack==normalattack||animation[targetanimation].attack==reversed){
+ if(animation[animTarget].attack==normalattack||animation[animTarget].attack==reversed){
glDisable(GL_TEXTURE_2D);
glColor4f(1,0,0,0.8);
}
for(k=0;k<num_weapons;k++){
i=weaponids[k];
if(weaponactive==k){
- if(weapons.type[i]!=staff){
+ if(weapons[i].getType()!=staff){
for(j=0;j<skeleton.num_muscles;j++){
if((skeleton.muscles[j].parent1->label==righthand||skeleton.muscles[j].parent2->label==righthand)&&skeleton.muscles[j].numvertices>0){
weaponattachmuscle=j;
weaponpoint=(skeleton.muscles[weaponattachmuscle].parent1->position+skeleton.muscles[weaponattachmuscle].parent2->position)/2;
if(creature==wolftype)weaponpoint=(skeleton.joints[skeleton.jointlabels[rightwrist]].position*.7+skeleton.joints[skeleton.jointlabels[righthand]].position*.3);
}
- if(weapons.type[i]==staff){
+ if(weapons[i].getType()==staff){
for(j=0;j<skeleton.num_muscles;j++){
if((skeleton.muscles[j].parent1->label==righthand||skeleton.muscles[j].parent2->label==righthand)&&skeleton.muscles[j].numvertices>0){
weaponattachmuscle=j;
vec2=(skeleton.joints[skeleton.jointlabels[rightwrist]].position-skeleton.joints[skeleton.jointlabels[rightshoulder]].position);
CrossProduct(&vec1,&vec2,&tempnormthing);
Normalise(&tempnormthing);
- if(targetanimation!=staffhitanim&¤tanimation!=staffhitanim&&targetanimation!=staffgroundsmashanim&¤tanimation!=staffgroundsmashanim&&targetanimation!=staffspinhitanim&¤tanimation!=staffspinhitanim)weaponpoint+=tempnormthing*.1-skeleton.specialforward[1]*.3+(skeleton.joints[skeleton.jointlabels[rightwrist]].position-skeleton.joints[skeleton.jointlabels[rightelbow]].position);
- /*if(targetanimation==staffhitanim||currentanimation==staffhitanim){
- XYZ weaptargnorm;
- weaptargnorm=DoRotation(weapons.tippoint[i]-weapons.position[i],0,-rotation,0);
- //weaptargnorm=animation[currentanimation].weapontarget[currentframe]*(1-target)+animation[targetanimation].weapontarget[targetframe]*(target);
- Normalise(&weaptargnorm);
- weaponpoint-=weaptargnorm*2;
- }*/
+ if(animTarget!=staffhitanim&&animCurrent!=staffhitanim&&animTarget!=staffgroundsmashanim&&animCurrent!=staffgroundsmashanim&&animTarget!=staffspinhitanim&&animCurrent!=staffspinhitanim)weaponpoint+=tempnormthing*.1-skeleton.specialforward[1]*.3+(skeleton.joints[skeleton.jointlabels[rightwrist]].position-skeleton.joints[skeleton.jointlabels[rightelbow]].position);
}
}
if(weaponactive!=k&&weaponstuck!=k){
- if(weapons.type[i]==knife)weaponpoint=skeleton.joints[skeleton.jointlabels[abdomen]].position+(skeleton.joints[skeleton.jointlabels[righthip]].position-skeleton.joints[skeleton.jointlabels[lefthip]].position)*.1+(skeleton.joints[skeleton.jointlabels[rightshoulder]].position-skeleton.joints[skeleton.jointlabels[leftshoulder]].position)*.35;
- if(weapons.type[i]==sword)weaponpoint=skeleton.joints[skeleton.jointlabels[abdomen]].position+(skeleton.joints[skeleton.jointlabels[lefthip]].position-skeleton.joints[skeleton.jointlabels[righthip]].position)*.09+(skeleton.joints[skeleton.jointlabels[leftshoulder]].position-skeleton.joints[skeleton.jointlabels[rightshoulder]].position)*.33;
- if(weapons.type[i]==staff)weaponpoint=skeleton.joints[skeleton.jointlabels[abdomen]].position+(skeleton.joints[skeleton.jointlabels[lefthip]].position-skeleton.joints[skeleton.jointlabels[righthip]].position)*.09+(skeleton.joints[skeleton.jointlabels[leftshoulder]].position-skeleton.joints[skeleton.jointlabels[rightshoulder]].position)*.33;
+ if(weapons[i].getType()==knife)weaponpoint=skeleton.joints[skeleton.jointlabels[abdomen]].position+(skeleton.joints[skeleton.jointlabels[righthip]].position-skeleton.joints[skeleton.jointlabels[lefthip]].position)*.1+(skeleton.joints[skeleton.jointlabels[rightshoulder]].position-skeleton.joints[skeleton.jointlabels[leftshoulder]].position)*.35;
+ if(weapons[i].getType()==sword)weaponpoint=skeleton.joints[skeleton.jointlabels[abdomen]].position+(skeleton.joints[skeleton.jointlabels[lefthip]].position-skeleton.joints[skeleton.jointlabels[righthip]].position)*.09+(skeleton.joints[skeleton.jointlabels[leftshoulder]].position-skeleton.joints[skeleton.jointlabels[rightshoulder]].position)*.33;
+ if(weapons[i].getType()==staff)weaponpoint=skeleton.joints[skeleton.jointlabels[abdomen]].position+(skeleton.joints[skeleton.jointlabels[lefthip]].position-skeleton.joints[skeleton.jointlabels[righthip]].position)*.09+(skeleton.joints[skeleton.jointlabels[leftshoulder]].position-skeleton.joints[skeleton.jointlabels[rightshoulder]].position)*.33;
for(j=0;j<skeleton.num_muscles;j++){
if((skeleton.muscles[j].parent1->label==abdomen||skeleton.muscles[j].parent2->label==abdomen)&&(skeleton.muscles[j].parent1->label==neck||skeleton.muscles[j].parent2->label==neck)&&skeleton.muscles[j].numvertices>0){
weaponrotatemuscle=j;
}
}
}
- if(!skeleton.free){
- weapons.position[i]=DoRotation(DoRotation(DoRotation(weaponpoint,0,0,tilt),tilt2,0,0),0,rotation,0)*scale+coords+currentoffset*(1-target)*scale+targetoffset*target*scale;
- weapons.bigrotation[i]=rotation;
- weapons.bigtilt[i]=tilt;
- weapons.bigtilt2[i]=tilt2;
- }
if(skeleton.free){
- weapons.position[i]=weaponpoint*scale+coords;
- weapons.bigrotation[i]=0;
- weapons.bigtilt[i]=0;
- weapons.bigtilt2[i]=0;
+ weapons[i].position=weaponpoint*scale+coords;
+ weapons[i].bigrotation=0;
+ weapons[i].bigtilt=0;
+ weapons[i].bigtilt2=0;
+ } else {
+ weapons[i].position=DoRotation(DoRotation(DoRotation(weaponpoint,0,0,tilt),tilt2,0,0),0,yaw,0)*scale+coords+currentoffset*(1-target)*scale+targetoffset*target*scale;
+ weapons[i].bigrotation=yaw;
+ weapons[i].bigtilt=tilt;
+ weapons[i].bigtilt2=tilt2;
}
- weapons.rotation1[i]=skeleton.muscles[weaponrotatemuscle].lastrotate1;
- weapons.rotation2[i]=skeleton.muscles[weaponrotatemuscle].lastrotate2;
- weapons.rotation3[i]=skeleton.muscles[weaponrotatemuscle].lastrotate3;
+ weapons[i].rotation1=skeleton.muscles[weaponrotatemuscle].lastrotate1;
+ weapons[i].rotation2=skeleton.muscles[weaponrotatemuscle].lastrotate2;
+ weapons[i].rotation3=skeleton.muscles[weaponrotatemuscle].lastrotate3;
if(weaponactive==k){
- if(weapons.type[i]==knife){
- weapons.smallrotation[i]=180;
- weapons.smallrotation2[i]=0;
+ if(weapons[i].getType()==knife){
+ weapons[i].smallrotation=180;
+ weapons[i].smallrotation2=0;
if(isCrouch()||wasCrouch()){
- weapons.smallrotation2[i]=20;
+ weapons[i].smallrotation2=20;
}
- if(targetanimation==hurtidleanim){
- weapons.smallrotation2[i]=50;
+ if(animTarget==hurtidleanim){
+ weapons[i].smallrotation2=50;
}
- if((currentanimation==crouchstabanim&&targetanimation==crouchstabanim)||(currentanimation==backhandspringanim&&targetanimation==backhandspringanim)){
+ if((animCurrent==crouchstabanim&&animTarget==crouchstabanim)||(animCurrent==backhandspringanim&&animTarget==backhandspringanim)){
XYZ temppoint1,temppoint2,tempforward;
float distance;
temppoint1=skeleton.joints[skeleton.jointlabels[righthand]].position;
- temppoint2=animation[currentanimation].weapontarget[currentframe]*(1-target)+animation[targetanimation].weapontarget[targetframe]*(target);
+ temppoint2=animation[animCurrent].weapontarget[frameCurrent]*(1-target)+animation[animTarget].weapontarget[frameTarget]*(target);
distance=findDistance(&temppoint1,&temppoint2);
- weapons.rotation2[i]=asin((temppoint1.y-temppoint2.y)/distance);
- weapons.rotation2[i]*=360/6.28;
+ weapons[i].rotation2=asin((temppoint1.y-temppoint2.y)/distance);
+ weapons[i].rotation2*=360/6.28;
temppoint1.y=0;
temppoint2.y=0;
- weapons.rotation1[i]=acos((temppoint1.z-temppoint2.z)/findDistance(&temppoint1,&temppoint2));
- weapons.rotation1[i]*=360/6.28;
- weapons.rotation3[i]=0;
- weapons.smallrotation[i]=-90;
- weapons.smallrotation2[i]=0;
- if(temppoint1.x>temppoint2.x)weapons.rotation1[i]=360-weapons.rotation1[i];
+ weapons[i].rotation1=acos((temppoint1.z-temppoint2.z)/findDistance(&temppoint1,&temppoint2));
+ weapons[i].rotation1*=360/6.28;
+ weapons[i].rotation3=0;
+ weapons[i].smallrotation=-90;
+ weapons[i].smallrotation2=0;
+ if(temppoint1.x>temppoint2.x)weapons[i].rotation1=360-weapons[i].rotation1;
}
- if((currentanimation==knifeslashreversalanim&&targetanimation==knifeslashreversalanim)||(currentanimation==knifeslashreversedanim&&targetanimation==knifeslashreversedanim)){
+ if((animCurrent==knifeslashreversalanim&&animTarget==knifeslashreversalanim)||(animCurrent==knifeslashreversedanim&&animTarget==knifeslashreversedanim)){
XYZ temppoint1,temppoint2,tempforward;
float distance;
temppoint1=skeleton.joints[skeleton.jointlabels[righthand]].position;
- temppoint2=animation[currentanimation].weapontarget[currentframe]*(1-target)+animation[targetanimation].weapontarget[targetframe]*(target);
+ temppoint2=animation[animCurrent].weapontarget[frameCurrent]*(1-target)+animation[animTarget].weapontarget[frameTarget]*(target);
distance=findDistance(&temppoint1,&temppoint2);
- weapons.rotation2[i]=asin((temppoint1.y-temppoint2.y)/distance);
- weapons.rotation2[i]*=360/6.28;
+ weapons[i].rotation2=asin((temppoint1.y-temppoint2.y)/distance);
+ weapons[i].rotation2*=360/6.28;
temppoint1.y=0;
temppoint2.y=0;
- weapons.rotation1[i]=acos((temppoint1.z-temppoint2.z)/findDistance(&temppoint1,&temppoint2));
- weapons.rotation1[i]*=360/6.28;
- weapons.rotation3[i]=0;
- weapons.smallrotation[i]=90;
- weapons.smallrotation2[i]=0;
- if(temppoint1.x>temppoint2.x)weapons.rotation1[i]=360-weapons.rotation1[i];
+ weapons[i].rotation1=acos((temppoint1.z-temppoint2.z)/findDistance(&temppoint1,&temppoint2));
+ weapons[i].rotation1*=360/6.28;
+ weapons[i].rotation3=0;
+ weapons[i].smallrotation=90;
+ weapons[i].smallrotation2=0;
+ if(temppoint1.x>temppoint2.x)weapons[i].rotation1=360-weapons[i].rotation1;
}
- if(targetanimation==knifethrowanim){
- weapons.smallrotation[i]=90;
- //weapons.smallrotation2[i]=-90;
- weapons.smallrotation2[i]=0;
- weapons.rotation1[i]=0;
- weapons.rotation2[i]=0;
- weapons.rotation3[i]=0;
+ if(animTarget==knifethrowanim){
+ weapons[i].smallrotation=90;
+ //weapons[i].smallrotation2=-90;
+ weapons[i].smallrotation2=0;
+ weapons[i].rotation1=0;
+ weapons[i].rotation2=0;
+ weapons[i].rotation3=0;
}
- if(targetanimation==knifesneakattackanim&&targetframe<5){
- weapons.smallrotation[i]=-90;
- weapons.rotation1[i]=0;
- weapons.rotation2[i]=0;
- weapons.rotation3[i]=0;
+ if(animTarget==knifesneakattackanim&&frameTarget<5){
+ weapons[i].smallrotation=-90;
+ weapons[i].rotation1=0;
+ weapons[i].rotation2=0;
+ weapons[i].rotation3=0;
}
}
- if(weapons.type[i]==sword){
- weapons.smallrotation[i]=0;
- weapons.smallrotation2[i]=0;
- if(targetanimation==knifethrowanim){
- weapons.smallrotation[i]=-90;
- weapons.smallrotation2[i]=0;
- weapons.rotation1[i]=0;
- weapons.rotation2[i]=0;
- weapons.rotation3[i]=0;
+ if(weapons[i].getType()==sword){
+ weapons[i].smallrotation=0;
+ weapons[i].smallrotation2=0;
+ if(animTarget==knifethrowanim){
+ weapons[i].smallrotation=-90;
+ weapons[i].smallrotation2=0;
+ weapons[i].rotation1=0;
+ weapons[i].rotation2=0;
+ weapons[i].rotation3=0;
}
- if((targetanimation==swordgroundstabanim&¤tanimation==swordgroundstabanim)||(targetanimation==swordsneakattackanim&¤tanimation==swordsneakattackanim)||(targetanimation==swordslashparryanim&¤tanimation==swordslashparryanim)||(targetanimation==swordslashparriedanim&¤tanimation==swordslashparriedanim)||(targetanimation==swordslashreversalanim&¤tanimation==swordslashreversalanim)||(targetanimation==swordslashreversedanim&¤tanimation==swordslashreversedanim)||(targetanimation==knifeslashreversalanim&¤tanimation==knifeslashreversalanim)||(targetanimation==knifeslashreversedanim&¤tanimation==knifeslashreversedanim)||(targetanimation==swordslashanim&¤tanimation==swordslashanim)||(targetanimation==drawleftanim&¤tanimation==drawleftanim)||(currentanimation==backhandspringanim&&targetanimation==backhandspringanim)){
+ if((animTarget==swordgroundstabanim&&animCurrent==swordgroundstabanim)||(animTarget==swordsneakattackanim&&animCurrent==swordsneakattackanim)||(animTarget==swordslashparryanim&&animCurrent==swordslashparryanim)||(animTarget==swordslashparriedanim&&animCurrent==swordslashparriedanim)||(animTarget==swordslashreversalanim&&animCurrent==swordslashreversalanim)||(animTarget==swordslashreversedanim&&animCurrent==swordslashreversedanim)||(animTarget==knifeslashreversalanim&&animCurrent==knifeslashreversalanim)||(animTarget==knifeslashreversedanim&&animCurrent==knifeslashreversedanim)||(animTarget==swordslashanim&&animCurrent==swordslashanim)||(animTarget==drawleftanim&&animCurrent==drawleftanim)||(animCurrent==backhandspringanim&&animTarget==backhandspringanim)){
XYZ temppoint1,temppoint2,tempforward;
float distance;
- temppoint1=animation[currentanimation].position[skeleton.jointlabels[righthand]][currentframe]*(1-target)+animation[targetanimation].position[skeleton.jointlabels[righthand]][targetframe]*(target); //skeleton.joints[skeleton.jointlabels[righthand]].position;
- temppoint2=animation[currentanimation].weapontarget[currentframe]*(1-target)+animation[targetanimation].weapontarget[targetframe]*(target);
+ temppoint1=animation[animCurrent].position[skeleton.jointlabels[righthand]][frameCurrent]*(1-target)+animation[animTarget].position[skeleton.jointlabels[righthand]][frameTarget]*(target); //skeleton.joints[skeleton.jointlabels[righthand]].position;
+ temppoint2=animation[animCurrent].weapontarget[frameCurrent]*(1-target)+animation[animTarget].weapontarget[frameTarget]*(target);
distance=findDistance(&temppoint1,&temppoint2);
- weapons.rotation2[i]=asin((temppoint1.y-temppoint2.y)/distance);
- weapons.rotation2[i]*=360/6.28;
+ weapons[i].rotation2=asin((temppoint1.y-temppoint2.y)/distance);
+ weapons[i].rotation2*=360/6.28;
temppoint1.y=0;
temppoint2.y=0;
- weapons.rotation1[i]=acos((temppoint1.z-temppoint2.z)/findDistance(&temppoint1,&temppoint2));
- weapons.rotation1[i]*=360/6.28;
- weapons.rotation3[i]=0;
- weapons.smallrotation[i]=90;
- weapons.smallrotation2[i]=0;
- if(temppoint1.x>temppoint2.x)weapons.rotation1[i]=360-weapons.rotation1[i];
+ weapons[i].rotation1=acos((temppoint1.z-temppoint2.z)/findDistance(&temppoint1,&temppoint2));
+ weapons[i].rotation1*=360/6.28;
+ weapons[i].rotation3=0;
+ weapons[i].smallrotation=90;
+ weapons[i].smallrotation2=0;
+ if(temppoint1.x>temppoint2.x)weapons[i].rotation1=360-weapons[i].rotation1;
}
}
- if(weapons.type[i]==staff){
- weapons.smallrotation[i]=100;
- weapons.smallrotation2[i]=0;
- if((targetanimation==staffhitanim&¤tanimation==staffhitanim)||(targetanimation==staffhitreversedanim&¤tanimation==staffhitreversedanim)||(targetanimation==staffspinhitreversedanim&¤tanimation==staffspinhitreversedanim)||(targetanimation==staffgroundsmashanim&¤tanimation==staffgroundsmashanim)||(targetanimation==staffspinhitanim&¤tanimation==staffspinhitanim)){
+ if(weapons[i].getType()==staff){
+ weapons[i].smallrotation=100;
+ weapons[i].smallrotation2=0;
+ if((animTarget==staffhitanim&&animCurrent==staffhitanim)||(animTarget==staffhitreversedanim&&animCurrent==staffhitreversedanim)||(animTarget==staffspinhitreversedanim&&animCurrent==staffspinhitreversedanim)||(animTarget==staffgroundsmashanim&&animCurrent==staffgroundsmashanim)||(animTarget==staffspinhitanim&&animCurrent==staffspinhitanim)){
XYZ temppoint1,temppoint2,tempforward;
float distance;
- temppoint1=animation[currentanimation].position[skeleton.jointlabels[righthand]][currentframe]*(1-target)+animation[targetanimation].position[skeleton.jointlabels[righthand]][targetframe]*(target); //skeleton.joints[skeleton.jointlabels[righthand]].position;
- temppoint2=animation[currentanimation].weapontarget[currentframe]*(1-target)+animation[targetanimation].weapontarget[targetframe]*(target);
+ temppoint1=animation[animCurrent].position[skeleton.jointlabels[righthand]][frameCurrent]*(1-target)+animation[animTarget].position[skeleton.jointlabels[righthand]][frameTarget]*(target); //skeleton.joints[skeleton.jointlabels[righthand]].position;
+ temppoint2=animation[animCurrent].weapontarget[frameCurrent]*(1-target)+animation[animTarget].weapontarget[frameTarget]*(target);
distance=findDistance(&temppoint1,&temppoint2);
- weapons.rotation2[i]=asin((temppoint1.y-temppoint2.y)/distance);
- weapons.rotation2[i]*=360/6.28;
+ weapons[i].rotation2=asin((temppoint1.y-temppoint2.y)/distance);
+ weapons[i].rotation2*=360/6.28;
temppoint1.y=0;
temppoint2.y=0;
- weapons.rotation1[i]=acos((temppoint1.z-temppoint2.z)/findDistance(&temppoint1,&temppoint2));
- weapons.rotation1[i]*=360/6.28;
- weapons.rotation3[i]=0;
- weapons.smallrotation[i]=90;
- weapons.smallrotation2[i]=0;
- if(temppoint1.x>temppoint2.x)weapons.rotation1[i]=360-weapons.rotation1[i];
+ weapons[i].rotation1=acos((temppoint1.z-temppoint2.z)/findDistance(&temppoint1,&temppoint2));
+ weapons[i].rotation1*=360/6.28;
+ weapons[i].rotation3=0;
+ weapons[i].smallrotation=90;
+ weapons[i].smallrotation2=0;
+ if(temppoint1.x>temppoint2.x)weapons[i].rotation1=360-weapons[i].rotation1;
}
}
}
if(weaponactive!=k&&weaponstuck!=k){
- if(weapons.type[i]==knife){
- weapons.smallrotation[i]=-70;
- weapons.smallrotation2[i]=10;
+ if(weapons[i].getType()==knife){
+ weapons[i].smallrotation=-70;
+ weapons[i].smallrotation2=10;
}
- if(weapons.type[i]==sword){
- weapons.smallrotation[i]=-100;
- weapons.smallrotation2[i]=-8;
+ if(weapons[i].getType()==sword){
+ weapons[i].smallrotation=-100;
+ weapons[i].smallrotation2=-8;
}
- if(weapons.type[i]==staff){
- weapons.smallrotation[i]=-100;
- weapons.smallrotation2[i]=-8;
+ if(weapons[i].getType()==staff){
+ weapons[i].smallrotation=-100;
+ weapons[i].smallrotation2=-8;
}
}
if(weaponstuck==k){
- if(weaponstuckwhere==0)weapons.smallrotation[i]=180;
- else weapons.smallrotation[i]=0;
- weapons.smallrotation2[i]=10;
- //if(animation[targetanimation].height==lowheight&&animation[targetanimation].attack==neutral){
- //}
+ if(weaponstuckwhere==0)
+ weapons[i].smallrotation=180;
+ else
+ weapons[i].smallrotation=0;
+ weapons[i].smallrotation2=10;
}
}
}
calcrot=0;
if(skeleton.free)calcrot=1;
- if(animation[targetanimation].attack||isRun()||targetanimation==staggerbackhardanim||isFlip()||targetanimation==climbanim||targetanimation==sneakanim||targetanimation==rollanim||targetanimation==walkanim||targetanimation==backhandspringanim||isFlip()||isWallJump())calcrot=1;
- if(currentanimation!=targetanimation)calcrot=1;
+ if(animation[animTarget].attack||isRun()||animTarget==staggerbackhardanim||isFlip()||animTarget==climbanim||animTarget==sneakanim||animTarget==rollanim||animTarget==walkanim||animTarget==backhandspringanim||isFlip()||isWallJump())calcrot=1;
+ if(animCurrent!=animTarget)calcrot=1;
//if(id==0)calcrot=1;
if(skeleton.free==2)calcrot=0;
oldp1=*p1;
*p1=*p1-*move;
- if(findDistancefast(p1,&model->boundingspherecenter)>radius*radius+model->boundingsphereradius*model->boundingsphereradius)return -1;
+ if(distsq(p1,&model->boundingspherecenter)>radius*radius+model->boundingsphereradius*model->boundingsphereradius)return -1;
if(*rotate)*p1=DoRotation(*p1,0,-*rotate,0);
for(i=0;i<4;i++){
for (j=0;j<model->TriangleNum;j++){
end.y-=radius;
if(LineFacetd(&start,&end,&model->vertex[model->Triangles[j].vertex[0]],&model->vertex[model->Triangles[j].vertex[1]],&model->vertex[model->Triangles[j].vertex[2]],&model->facenormals[j],&point)){
p1->y=point.y+radius;
- if((targetanimation==jumpdownanim||isFlip())){
- if(isFlip()&&(targetframe<5||animation[targetanimation].label[targetframe]==7||animation[targetanimation].label[targetframe]==4))RagDoll(0);
+ if((animTarget==jumpdownanim||isFlip())){
+ if(isFlip()&&(frameTarget<5||animation[animTarget].label[frameTarget]==7||animation[animTarget].label[frameTarget]==4))RagDoll(0);
- if(targetanimation==jumpupanim){jumppower=-4;targetanimation=getIdle();}
+ if(animTarget==jumpupanim){jumppower=-4;animTarget=getIdle();}
target=0;
- targetframe=0;
+ frameTarget=0;
onterrain=1;
if(id==0){
- OPENAL_SetPaused(channels[whooshsound], true);
+ pause_sound(whooshsound);
OPENAL_SetVolume(channels[whooshsound], 0);
}
- if((targetanimation==jumpdownanim||isFlip())&&!wasLanding()&&!wasLandhard()){
+ if((animTarget==jumpdownanim||isFlip())&&!wasLanding()&&!wasLandhard()){
if(isFlip())jumppower=-4;
- targetanimation=getLanding();
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
- PlaySoundEx( landsound, samp[landsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[landsound], gLoc, vel);
- OPENAL_SetVolume(channels[landsound], 128);
- OPENAL_SetPaused(channels[landsound], false);
+ animTarget=getLanding();
+ emit_sound_at(landsound, coords, 128.);
if(id==0){
envsound[numenvsounds]=coords;
p1->x, p1->y, p1->z, radius/2);
end=*p1-point;
if(dotproduct(&model->facenormals[j],&end)>0&&intersecting){
- if((targetanimation==jumpdownanim||targetanimation==jumpupanim||isFlip())){
+ if((animTarget==jumpdownanim||animTarget==jumpupanim||isFlip())){
start=velocity;
velocity-=DoRotation(model->facenormals[j],0,*rotate,0)*findLength(&velocity)*abs(normaldotproduct(velocity,DoRotation(model->facenormals[j],0,*rotate,0)));//(distance-radius*.5)/multiplier;
if(findLengthfast(&start)<findLengthfast(&velocity))velocity=start;
*p1+=*move;
return firstintersecting;
}
-
-Person::Person()
-{
- whichpatchx = 0;
- whichpatchz = 0;
-
- currentframe = 0;
- targetframe = 0;
- currentanimation = 0;
- targetanimation = 0;
- oldcurrentframe = 0;
- oldtargetframe = 0;
- oldcurrentanimation = 0;
- oldtargetanimation = 0;
-
- howactive = 0;
-
- parriedrecently = 0;
-
- superruntoggle = 0;
-
- lastattack = 0,lastattack2 = 0,lastattack3 = 0;
-
- currentoffset = 0,targetoffset = 0,offset = 0;
- target = 0;
- transspeed = 0;
-
- realoldcoords = 0;
- oldcoords = 0;
- coords = 0;
- originalcoords = 0;
- velocity = 0;
-
- proportionhead = 0;
- proportionlegs = 0;
- proportionarms = 0;
- proportionbody = 0;
-
- heightleft = 0;
- heightright = 0;
-
- unconscioustime = 0;
-
- immobile = 0;
-
- velspeed = 0;
- targetrotation = 0;
- targetrot = 0;
- rot = 0;
- oldrot = 0;
- lookrotation = 0;
- lookrotation2 = 0;
- rotation = 0;
- rotation2 = 0;
- lowrotation = 0;
- tilt = 0;
- targettilt = 0;
- tilt2 = 0;
- targettilt2 = 0;
- rabbitkickenabled = 0;
-
- bloodloss = 0;
- bleeddelay = 0;
- skiddelay = 0;
- skiddingdelay = 0;
- deathbleeding = 0;
- tempdeltav = 0;
-
- damagetolerance = 0;
- damage = 0;
- permanentdamage = 0;
- superpermanentdamage = 0; lastcollide = 0;
- dead = 0;
-
- jumppower = 0;
- onground = 0;
- madskills = 0;
-
- wentforweapon = 0;
-
- calcrot = 0;
-
- backwardsanim = 0;
-
- facing = 0;
-
- bleeding = 0;
- bleedx = 0,bleedy;
- direction = 0;
- texupdatedelay = 0;
-
- headrotation = 0,headrotation2 = 0;
- targetheadrotation = 0,targetheadrotation2 = 0;
-
- onterrain = 0;
- pause = 0;
-
- grabdelay = 0;
-
- victim = 0;
- hasvictim = 0;
-
- updatedelay = 0;
- normalsupdatedelay = 0;
-
- jumpstart = 0;
-
- forwardkeydown = 0;
- forwardstogglekeydown = 0;
- rightkeydown = 0;
- leftkeydown = 0;
- backkeydown = 0;
- jumpkeydown = 0;
- jumptogglekeydown = 0;
- crouchkeydown = 0;
- crouchtogglekeydown = 0;
- drawkeydown = 0;
- drawtogglekeydown = 0;
- throwkeydown = 0;
- throwtogglekeydown = 0;
- attackkeydown = 0;
- feint = 0;
- lastfeint = 0;
- headless = 0;
-
- crouchkeydowntime = 0;
- jumpkeydowntime = 0;
- freefall = 0;
-
-
- turnspeed = 0;
-
- aitype = 0;
- aitarget = 0;
- aiupdatedelay = 0;
- losupdatedelay = 0;
- ally = 0;
- movetarget = 0;
- collide = 0;
- collided = 0;
- avoidcollided = 0;
- loaded = 0;
- whichdirection = 0;
- whichdirectiondelay = 0;
- avoidsomething = 0; avoidwhere = 0;
- blooddimamount = 0;
-
- staggerdelay = 0;
- blinkdelay = 0;
- twitchdelay = 0;
- twitchdelay2 = 0;
- twitchdelay3 = 0;
- lefthandmorphness = 0;
- righthandmorphness = 0;
- headmorphness = 0;
- chestmorphness = 0;
- tailmorphness = 0;
- targetlefthandmorphness = 0;
- targetrighthandmorphness = 0;
- targetheadmorphness = 0;
- targetchestmorphness = 0;
- targettailmorphness = 0;
- lefthandmorphstart = 0,lefthandmorphend = 0;
- righthandmorphstart = 0,righthandmorphend = 0;
- headmorphstart = 0,headmorphend = 0;
- chestmorphstart = 0,chestmorphend = 0;
- tailmorphstart = 0,tailmorphend = 0;
-
- weaponmissdelay = 0;
- highreversaldelay = 0;
- lowreversaldelay = 0;
- nocollidedelay = 0;
-
- creature = 0;
-
- id = 0;
-
- //Skeleton skeleton;
-
- speed = 0;
- scale = 0;
- power = 0;
- speedmult = 0;
-
- protectionhead = 0;
- protectionhigh = 0;
- protectionlow = 0;
- armorhead = 0;
- armorhigh = 0;
- armorlow = 0;
- metalhead = 0;
- metalhigh = 0;
- metallow = 0;
-
- numclothes = 0;
-
- memset(clothes, 0, sizeof(clothes));
- memset(clothestintr, 0, sizeof(clothestintr));
- memset(clothestintg, 0, sizeof(clothestintg));
- memset(clothestintb, 0, sizeof(clothestintb));
-
- landhard = 0;
- bled = 0;
- spurt = 0;
- onfire = 0;
- onfiredelay = 0; burnt = 0;
- fireduration = 0;
-
- flamedelay = 0;
- updatestuffdelay = 0;
-
- playerdetail = 0;
-
- num_weapons = 0;
-
- memset(weaponids, 0, sizeof(weaponids));
-
- weaponactive = 0;
- weaponstuck = 0;
- weaponstuckwhere = 0;
- weaponwhere = 0;
-
- numwaypoints = 0;
-
- memset(waypoints, 0, sizeof(waypoints));
- memset(waypointtype, 0, sizeof(waypointtype));
-
- pausetime = 0;
- hastempwaypoint = 0;
- tempwaypoint = 0;
-
- headtarget = 0;
- interestdelay = 0;
-
- finalfinaltarget = 0;
- finaltarget = 0;
- finalpathfindpoint = 0;
- targetpathfindpoint = 0;
- lastpathfindpoint = 0;
- lastpathfindpoint2 = 0;
- lastpathfindpoint3 = 0;
- lastpathfindpoint4 = 0;
- onpath = 0;
-
- waypoint = 0;
- jumppath = 0;
-
- lastseen = 0;
- lastseentime = 0;
- lastchecktime = 0;
- stunned = 0;
- surprised = 0;
- runninghowlong = 0; lastoccluded = 0;
- laststanding = 0;
- escapednum = 0;
-
- speechdelay = 0;
- neckspurtdelay = 0;
- neckspurtparticledelay = 0;
- neckspurtamount = 0;
-
- whichskin = 0;
- rabbitkickragdoll = 0;
-
- averageloc = 0;
- oldaverageloc = 0;
-
- //Animation tempanimation;
-
- occluded = 0;
-
- jumpclimb = 0;
-}
-
-Person::~Person()
-{
-}
-