X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FPerson.cpp;h=25713a4905ec3d87d9ea704e29eef14c35f30b33;hb=443dd85b562cc9b1584297e0eae4206d64189932;hp=3ee97382eb4ad4c48aa033c3eb3dda39408b4a49;hpb=9dab8db49cf697e08bc6ad9d15f500a259a7f2d2;p=lugaru.git diff --git a/Source/Person.cpp b/Source/Person.cpp index 3ee9738..25713a4 100644 --- a/Source/Person.cpp +++ b/Source/Person.cpp @@ -67,7 +67,6 @@ extern bool tiltweird; 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]; @@ -86,66 +85,64 @@ extern int indialogue; extern bool gamestarted; -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); - if(tutoriallevel!=1) - emit_sound_at(heavyimpactsound, victim->coords); - victim->RagDoll(0); - relative=velocity; - relative.y=0; - Normalise(&relative); - for(i=0;iskeleton.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; - currentframe=3; - targetanimation=backflipanim; - targetframe=4; - velocity=facing*-10; - velocity.y=5; - skeleton.free=0; - if(id==0)OPENAL_SetPaused(channels[whooshsound], false); - - award_bonus(id, cannon); - } - 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 + && (targetanimation == rabbitkickanim + && victim + && victim != this + && currentframe >= 2 + && currentanimation == rabbitkickanim) + && (findDistancefast(&coords,&victim->coords) < 1.2) + && (!victim->skeleton.free))) + return; + + if (animation[victim->targetanimation].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;iskeleton.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; + currentframe=3; + targetanimation=backflipanim; + targetframe=4; + velocity=facing*-10; + velocity.y=5; + skeleton.free=0; + if(id==0)OPENAL_SetPaused(channels[whooshsound], false); + + award_bonus(id, cannon); + } + 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::CatchFire(){ @@ -477,8 +474,7 @@ void Person::DoBloodBig(float howmuch,int which){ } } 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); + DoMipmaps(); bleedxint=0; bleedyint=0; @@ -706,8 +702,7 @@ bool Person::DoBloodBigWhere(float howmuch,int which, XYZ where){ } } 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); + DoMipmaps(); bleedy=(1+coordsy)*512; bleedx=coordsx*512; @@ -737,390 +732,326 @@ bool Person::DoBloodBigWhere(float howmuch,int which, XYZ where){ } -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;iskeleton.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;iaitype == playercontrolled + || hostiletime > 1 + || staggerdelay <= 0) + && victim->targetanimation != jumpupanim + && victim->targetanimation != 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(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;jcurrentanimation=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;jcurrentanimation=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;jcurrentanimation=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;jcurrentanimation=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){ + 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; + emit_sound_at(swordstaffsound, victim->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;jcurrentanimation=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;jcurrentanimation=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;jcurrentanimation=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;jcurrentanimation=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){ - 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; - emit_sound_at(swordstaffsound, victim->coords); - } - else{ - 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->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;iweaponids[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; - - emit_sound_at(swordstaffsound, coords); - } - else{ - emit_sound_at(metalhitsound, coords); - } - } - - 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;icoords)>.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, victim->coords); + } + } + 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;iweaponids[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; + + emit_sound_at(swordstaffsound, coords); + } + else{ + emit_sound_at(metalhitsound, coords); + } + } + + 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;icoords)>.2){ + victim->targetanimation=dodgebackanim; + 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 + { + 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; + } + } - 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->targetanimation].attack==reversal)numreversals++; } void Person::DoDamage(float howmuch){ @@ -3917,7 +3848,7 @@ void Person::DoStuff(){ 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); + if(bleeding<=0&&(detail!=2||osx))DoMipmaps(); } } @@ -4044,7 +3975,7 @@ void Person::DoStuff(){ } if(!osx&&detail>1){ glBindTexture(GL_TEXTURE_2D,skeleton.drawmodel.textureptr); - DoMipmaps(0,startx,endx,starty,endy); + DoMipmaps(); } if(!skeleton.free){ @@ -4472,10 +4403,6 @@ void Person::DoStuff(){ skeleton.free=1; emit_sound_at(breaksound, coords); - /*if(id==0||findDistancefast(&coords,&viewer)<50){ - slomo=1; - slomodelay=.2; - }*/ } if(skeleton.free==1){ @@ -5719,35 +5646,11 @@ int Person::DrawSkeleton(){ 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=0){*/ glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glPushMatrix(); if(skeleton.muscles[i].parent1->label==abdomen||skeleton.muscles[i].parent2->label==abdomen) @@ -6042,13 +5945,6 @@ int Person::DrawSkeleton(){ 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(weaponactive!=k&&weaponstuck!=k){