X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FPerson.cpp;h=87a4bbe952169d8071309255f4847fe9ab399da5;hb=26debbd380c6922e5a0b60d99567c6374a4fef9a;hp=47212bd59ac3eee01265620103cc9898e86e4f63;hpb=af283344ca70f7fbe9abd0d269511bc4ec3ff4bf;p=lugaru.git diff --git a/Source/Person.cpp b/Source/Person.cpp index 47212bd..87a4bbe 100644 --- a/Source/Person.cpp +++ b/Source/Person.cpp @@ -141,7 +141,7 @@ void Person::CheckKick() velocity=0; victim->oldcoords=victim->coords; coords=victim->coords; - victim->targetrotation=targetrotation; + victim->targetyaw=targetyaw; victim->victim=this; } } @@ -153,7 +153,7 @@ 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); } @@ -177,10 +177,14 @@ int Person::getIdle(){ 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; } @@ -250,20 +254,20 @@ 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) @@ -272,17 +276,17 @@ void Person::DoBlood(float howmuch,int which){ 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); } @@ -292,7 +296,6 @@ void Person::DoBlood(float howmuch,int which){ 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]500||bleedyint>500){ bleedxint=abs(Random()%512); @@ -362,20 +365,20 @@ void Person::DoBloodBig(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); } } } @@ -397,9 +400,7 @@ void Person::DoBloodBig(float howmuch,int which){ offsetx=Random()%20; } if(which==220||which==215){ - //offsety=Random()%20; offsetx=20; - //offsetx=abs(Random()%80); } @@ -474,7 +475,7 @@ void Person::DoBloodBig(float howmuch,int which){ } } } - glBindTexture(GL_TEXTURE_2D,skeleton.drawmodel.textureptr); + skeleton.drawmodel.textureptr.bind(); DoMipmaps(); bleedxint=0; @@ -515,7 +516,7 @@ void Person::DoBloodBig(float howmuch,int which){ } 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; @@ -529,7 +530,7 @@ bool Person::DoBloodBigWhere(float howmuch,int which, XYZ where){ 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; @@ -588,20 +589,20 @@ bool Person::DoBloodBigWhere(float howmuch,int which, XYZ where){ 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); } } } @@ -702,7 +703,7 @@ bool Person::DoBloodBigWhere(float howmuch,int which, XYZ where){ } } } - glBindTexture(GL_TEXTURE_2D,skeleton.drawmodel.textureptr); + skeleton.drawmodel.textureptr.bind(); DoMipmaps(); bleedy=(1+coordsy)*512; @@ -777,14 +778,14 @@ void Person::Reverse() 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; + 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]; @@ -805,14 +806,14 @@ void Person::Reverse() 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; + 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]; @@ -832,14 +833,14 @@ void Person::Reverse() 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; + 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]; @@ -859,14 +860,14 @@ void Person::Reverse() 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; + 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]; @@ -891,8 +892,8 @@ void Person::Reverse() victim->velocity=0; victim->oldcoords=victim->coords; victim->coords=coords; - victim->targetrotation=targetrotation; - victim->rotation=targetrotation; + victim->targetyaw=targetyaw; + victim->yaw=targetyaw; victim->victim=this; } if(targetanimation==winduppunchanim){ @@ -901,7 +902,7 @@ void Person::Reverse() victim->targetframe=1; victim->target=.5; victim->victim=this; - victim->targetrotation=targetrotation+180; + victim->targetyaw=targetyaw+180; } if(targetanimation==wolfslapanim){ targetanimation=winduppunchblockedanim; @@ -909,7 +910,7 @@ void Person::Reverse() victim->targetframe=1; victim->target=.5; victim->victim=this; - victim->targetrotation=targetrotation+180; + victim->targetyaw=targetyaw+180; } if((targetanimation==swordslashanim||targetanimation==staffhitanim||targetanimation==staffspinhitanim)&&victim->weaponactive!=-1){ targetanimation=swordslashparriedanim; @@ -919,36 +920,38 @@ void Person::Reverse() victim->targetframe=1; victim->target=.5; victim->victim=this; - victim->targetrotation=targetrotation+180; + victim->targetyaw=targetyaw+180; - if(abs(Random()%20)==0||weapons.type[victim->weaponids[victim->weaponactive]]==knife){ + if(abs(Random()%20)==0||weapons[victim->weaponids[victim->weaponactive]].getType()==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); - } + 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{ + 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->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[victim->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[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]; @@ -962,9 +965,9 @@ void Person::Reverse() if(abs(Random()%20)==0){ 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; + 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); } @@ -978,18 +981,18 @@ void Person::Reverse() target=0; targetframe=0; targetanimation=staggerbackhighanim; - targetrotation=targetrotation+180; + targetyaw=targetyaw+180; target=0; - weapons.owner[weaponids[0]]=-1; + weapons[weaponids[0]].owner=-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; + 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]; @@ -1013,9 +1016,9 @@ void Person::Reverse() 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->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; @@ -1032,9 +1035,9 @@ void Person::Reverse() 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->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; @@ -1085,7 +1088,7 @@ void Person::DoDamage(float howmuch){ for(int i=0;i180)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)targetheadrotation){ - headrotation-=multiplier*lookspeed; + if(abs(headyaw-targetheadyaw)targetheadyaw){ + headyaw-=multiplier*lookspeed; } - else if(headrotationtargetheadrotation2){ - headrotation2-=multiplier*lookspeed/2; + if(abs(headpitch-targetheadpitch)targetheadpitch){ + headpitch-=multiplier*lookspeed/2; } - else if(headrotation2label==head||skeleton.muscles[i].parent2->label==head)) @@ -1237,7 +1240,7 @@ void Person::RagDoll(bool checkcollision){ facing=0; facing.z=1; - facing=DoRotation(facing,0,rotation,0); + facing=DoRotation(facing,0,yaw,0); skeleton.freetime=0; @@ -1252,7 +1255,7 @@ void Person::RagDoll(bool checkcollision){ 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; @@ -1260,8 +1263,8 @@ void Person::RagDoll(bool checkcollision){ for(i=0;i0){ - 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; + 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]; @@ -1385,26 +1388,26 @@ void Person::FootLand(int which, float opacity){ 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); } 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)=1||detail==2)if(detail==2)if(findDistancefast(&footpoint,&viewer)=1||detail==2)if(detail==2)if(findDistancefast(&footpoint,&viewer)=1||detail==2)if(detail==2)if(findDistancefast(&footpoint,&viewer)=1||detail==2)if(detail==2)if(findDistancefast(&footpoint,&viewer)=-.3)targetanimation=flipanim; else targetanimation=backflipanim; @@ -1514,8 +1526,8 @@ void Person::DoAnimations(){ else victim->targetanimation=rabbittackledfrontanim; victim->targetframe=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){ @@ -1530,7 +1542,7 @@ void Person::DoAnimations(){ } 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(weapons[weaponids[0]].getType()==knife){ if(weaponactive==-1)weaponactive=0; else if(weaponactive==0)weaponactive=-1; @@ -1644,16 +1656,16 @@ void Person::DoAnimations(){ targetframe++; if(targetanimation==removeknifeanim&&animation[targetanimation].label[currentframe]==5){ - for(i=0;i=1){ - if(weapons.type[i]!=staff){ + for(i=0;i=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]; } @@ -1664,36 +1676,34 @@ void Person::DoAnimations(){ } } - static bool willwork; if(targetanimation==crouchremoveknifeanim&&animation[targetanimation].label[currentframe]==5){ - for(i=0;i1)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){ - bool fleshstuck=0; - if(weapons.owner[i]!=-1) + for(i=0;i1)willwork=0; + if((weapons[i].owner==-1)||(hasvictim&&weapons[i].owner==victim->id&&victim->skeleton.free)) + if(willwork&&findDistancefastflat(&coords,&weapons[i].position)<3&&weaponactive==-1){ + if(findDistancefast(&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){ - emit_sound_at(knifedrawsound, coords, 128.); + fleshstuck=true; } } if(fleshstuck){ 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; @@ -1713,12 +1723,12 @@ void Person::DoAnimations(){ 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; } } @@ -1733,7 +1743,7 @@ void Person::DoAnimations(){ 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]; } @@ -1765,14 +1775,14 @@ void Person::DoAnimations(){ if((currentanimation==walljumprightkickanim&&targetanimation==walljumprightkickanim)||(currentanimation==walljumpleftkickanim&&targetanimation==walljumpleftkickanim)){ - XYZ rotatetarget=DoRotation(skeleton.forward,0,rotation,0); + 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(targetanimation==walljumprightkickanim)targetyaw+=40; + if(targetanimation==walljumpleftkickanim)targetyaw-=40; } bool dojumpattack; @@ -1815,9 +1825,9 @@ void Person::DoAnimations(){ 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){ emit_sound_at(jumpsound, coords, 128.); @@ -2095,7 +2105,7 @@ void Person::DoAnimations(){ 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); + terrain.MakeDecal(blooddecalfast,(weapons[weaponids[weaponactive]].tippoint*.8+weapons[weaponids[weaponactive]].position*.2),.08,.6,Random()%360); emit_sound_at(knifesheathesound, coords, 128.); } @@ -2105,34 +2115,34 @@ void Person::DoAnimations(){ 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; @@ -2145,7 +2155,7 @@ void Person::DoAnimations(){ 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; @@ -2159,9 +2169,9 @@ void Person::DoAnimations(){ 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; @@ -2182,20 +2192,20 @@ void Person::DoAnimations(){ 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; @@ -2204,21 +2214,21 @@ void Person::DoAnimations(){ 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; @@ -2227,7 +2237,7 @@ void Person::DoAnimations(){ 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); @@ -2260,8 +2270,8 @@ void Person::DoAnimations(){ } } if(!hasvictim&&onterrain){ - weapons.bloody[weaponids[weaponactive]]=0; - weapons.blooddrip[weaponids[weaponactive]]=0; + weapons[weaponids[weaponactive]].bloody=0; + weapons[weaponids[weaponactive]].blooddrip=0; } } @@ -2289,7 +2299,7 @@ void Person::DoAnimations(){ victim->targetframe=0; victim->targetanimation=staggerbackhardanim; - victim->targetrotation=targetrotation+180; + victim->targetyaw=targetyaw+180; victim->target=0; victim->stunned=1; @@ -2337,7 +2347,7 @@ void Person::DoAnimations(){ victim->targetframe=0; victim->targetanimation=staggerbackhardanim; - victim->targetrotation=targetrotation+180; + victim->targetyaw=targetyaw+180; victim->target=0; victim->stunned=1; @@ -2362,9 +2372,9 @@ void Person::DoAnimations(){ if(victim->id==0)camerashake+=.4; 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; + 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); } @@ -2381,19 +2391,19 @@ void Person::DoAnimations(){ 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){ 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]; @@ -2417,7 +2427,7 @@ void Person::DoAnimations(){ if(victim->id != 0 || difficulty==2){ victim->targetframe=0; victim->targetanimation=staggerbackhardanim; - victim->targetrotation=targetrotation+180; + victim->targetyaw=targetyaw+180; victim->target=0; } } @@ -2425,8 +2435,8 @@ void Person::DoAnimations(){ 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; @@ -2434,7 +2444,7 @@ void Person::DoAnimations(){ 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); @@ -2466,13 +2476,13 @@ void Person::DoAnimations(){ if(tutoriallevel!=1){ victim->targetframe=0; victim->targetanimation=staggerbackhardanim; - victim->targetrotation=targetrotation+180; + 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; @@ -2486,7 +2496,7 @@ void Person::DoAnimations(){ 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; @@ -2499,9 +2509,9 @@ void Person::DoAnimations(){ } else { 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; + 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); } @@ -2516,18 +2526,18 @@ void Person::DoAnimations(){ victim->target=0; victim->targetframe=0; victim->targetanimation=staggerbackhighanim; - victim->targetrotation=targetrotation+180; + 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]; @@ -2545,7 +2555,7 @@ void Person::DoAnimations(){ 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(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){ @@ -2579,7 +2589,7 @@ void Person::DoAnimations(){ 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(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){ @@ -2611,7 +2621,7 @@ void Person::DoAnimations(){ if(findDistancefast(&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; @@ -2702,7 +2712,7 @@ void Person::DoAnimations(){ victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].velocity+=relative*damagemult*200; victim->targetframe=0; victim->targetanimation=staggerbackhighanim; - victim->targetrotation=targetrotation+180; + victim->targetyaw=targetyaw+180; victim->target=0; if(tutoriallevel!=1){ emit_sound_at(landsound2, victim->coords, 128.); @@ -2760,7 +2770,7 @@ void Person::DoAnimations(){ victim->skeleton.joints[victim->skeleton.jointlabels[abdomen]].velocity+=relative*damagemult*200; victim->targetframe=0; victim->targetanimation=staggerbackhighanim; - victim->targetrotation=targetrotation+180; + victim->targetyaw=targetyaw+180; victim->target=0; if(tutoriallevel!=1){ emit_sound_at(landsound2, victim->coords, 128.); @@ -2809,8 +2819,8 @@ void Person::DoAnimations(){ if((targetanimation==swordslashreversalanim||targetanimation==knifeslashreversalanim||targetanimation==staffhitreversalanim||targetanimation==staffspinhitreversalanim)&&animation[targetanimation].label[currentframe]==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]; @@ -2909,13 +2919,13 @@ void Person::DoAnimations(){ 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->armorhigh,225); emit_sound_at(knifeslicesound, victim->coords); - 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; } if(weaponactive==-1&&creature==wolftype){; emit_sound_at(clawslicesound, victim->coords, 128.); @@ -2996,13 +3006,13 @@ void Person::DoAnimations(){ 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(200,225); emit_sound_at(knifeslicesound, victim->coords); - if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2; - weapons.blooddrip[weaponids[weaponactive]]+=5; + if(bloodtoggle)weapons[weaponids[weaponactive]].bloody=2; + weapons[weaponids[weaponactive]].blooddrip+=5; } if(creature==wolftype&&weaponactive==-1){ @@ -3024,14 +3034,14 @@ void Person::DoAnimations(){ 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); @@ -3043,9 +3053,9 @@ void Person::DoAnimations(){ 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); @@ -3055,8 +3065,8 @@ void Person::DoAnimations(){ victim->bloodloss+=10000; victim->velocity=0; emit_sound_at(fleshstabsound, victim->coords); - if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2; - weapons.blooddrip[weaponids[weaponactive]]+=5; + if(bloodtoggle)weapons[weaponids[weaponactive]].bloody=2; + weapons[weaponids[weaponactive]].blooddrip+=5; } } @@ -3074,14 +3084,14 @@ void Person::DoAnimations(){ } if(weaponactive!=-1&&animation[victim->targetanimation].attack!=reversal){ emit_sound_at(fleshstabremovesound, victim->coords); - if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2; - weapons.blooddrip[weaponids[weaponactive]]+=5; + 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); @@ -3097,9 +3107,9 @@ void Person::DoAnimations(){ 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); @@ -3109,8 +3119,8 @@ void Person::DoAnimations(){ victim->bloodloss+=10000; victim->velocity=0; emit_sound_at(fleshstabsound, victim->coords); - if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2; - weapons.blooddrip[weaponids[weaponactive]]+=5; + if(bloodtoggle)weapons[weaponids[weaponactive]].bloody=2; + weapons[weaponids[weaponactive]].blooddrip+=5; } } @@ -3122,14 +3132,14 @@ void Person::DoAnimations(){ } if(weaponactive!=-1){ emit_sound_at(fleshstabremovesound, victim->coords); - if(bloodtoggle)weapons.bloody[weaponids[weaponactive]]=2; - weapons.blooddrip[weaponids[weaponactive]]+=5; + 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); @@ -3152,13 +3162,13 @@ void Person::DoAnimations(){ 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); emit_sound_at(knifeslicesound, victim->coords); - 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; } if(weaponactive==-1&&creature==wolftype){ emit_sound_at(clawslicesound, victim->coords, 128.); @@ -3327,9 +3337,9 @@ void Person::DoAnimations(){ targetframe=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; @@ -3347,16 +3357,16 @@ void Person::DoAnimations(){ if(targetanimation==walljumprightanim){ targetanimation=rightflipanim; targetframe=4; - targetrotation-=90; - rotation-=90; + 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; + //targetyaw-=180; + ////yaw-=180; velocity=facing*8; velocity.y=4; } @@ -3384,9 +3394,9 @@ void Person::DoAnimations(){ targetframe=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; @@ -3396,8 +3406,8 @@ void Person::DoAnimations(){ if(targetanimation!=walljumpleftkickanim){ targetanimation=leftflipanim; targetframe=4; - targetrotation+=90; - rotation+=90; + targetyaw+=90; + yaw+=90; velocity=DoRotation(facing,0,-30,0)*-8; velocity.y=4; } @@ -3405,24 +3415,22 @@ void Person::DoAnimations(){ resume_stream(whooshsound); } if(targetanimation==sneakattackanim){ - float ycoords=oldcoords.y; currentanimation=getCrouch(); targetanimation=getCrouch(); targetframe=1; currentframe=0; - targetrotation+=180; - rotation+=180; + 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(onterrain)coords.y=terrain.getHeight(coords.x,coords.z); @@ -3436,12 +3444,12 @@ void Person::DoAnimations(){ if(animation[targetanimation].attack==reversal&¤tanimation!=sneakattackanim&¤tanimation!=knifesneakattackanim&¤tanimation!=swordsneakattackanim&¤tanimation!=knifefollowanim){ float ycoords=oldcoords.y; targetanimation=getStop(); - targetrotation+=180; - rotation+=180; + 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) @@ -3450,24 +3458,24 @@ void Person::DoAnimations(){ oldcoords=coords+facing*1.1; else if(currentanimation==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){ 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; + targetyaw+=180; + yaw+=180; + targetheadyaw+=180; targettilt2=0; tilt2=0; } @@ -3486,7 +3494,7 @@ void Person::DoAnimations(){ } if(animation[targetanimation].attack==reversed){ escapednum++; - if(targetanimation==sweepreversedanim)targetrotation+=90; + if(targetanimation==sweepreversedanim)targetyaw+=90; targetanimation=backhandspringanim; targetframe=2; emit_sound_at(landsound, coords, 128); @@ -3495,16 +3503,16 @@ void Person::DoAnimations(){ targetanimation=rollanim; targetframe=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; + 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; } } @@ -3516,12 +3524,12 @@ void Person::DoAnimations(){ if(currentanimation==spinkickanim||currentanimation==getupfrombackanim||currentanimation==getupfromfrontanim||currentanimation==lowkickanim){ targetanimation=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[currentanimation].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[currentanimation].offset*-1,0,yaw,0)*scale; currentoffset.y-=(coords.y-targetoffset.y); coords.y=targetoffset.y; targetoffset=0; @@ -3533,10 +3541,10 @@ void Person::DoAnimations(){ lastfeint=0; } if(currentanimation==rabbitkickanim&&targetanimation!=backflipanim){ - targetrotation=rotation; + 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; @@ -3641,7 +3649,7 @@ void Person::DoAnimations(){ if(target>1){currentframe=targetframe; target=1;} oldrot=rot; rot=targetrot*target; - rotation+=rot-oldrot; + yaw+=rot-oldrot; if(target==1){ rot=0; oldrot=0; @@ -3742,7 +3750,6 @@ void Person::DoStuff(){ static int howmany; static int bloodsize; static int startx,starty,endx,endy; - static int texdetailint; static GLubyte color; static XYZ bloodvel; @@ -3799,7 +3806,7 @@ void Person::DoStuff(){ } } if(weaponactive==-1&&num_weapons>0){ - if(weapons.type[weaponids[0]]==staff){ + if(weapons[weaponids[0]].getType()==staff){ weaponactive=0; } } @@ -3833,7 +3840,7 @@ void Person::DoStuff(){ 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); } @@ -3843,7 +3850,7 @@ void Person::DoStuff(){ 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); } @@ -3851,7 +3858,7 @@ void Person::DoStuff(){ if(bleeding>0){ bleeding-=multiplier*.3; if(bloodtoggle==2){ - glBindTexture(GL_TEXTURE_2D,skeleton.drawmodel.textureptr); + skeleton.drawmodel.textureptr.bind(); if(bleeding<=0&&(detail!=2||osx))DoMipmaps(); } } @@ -3865,15 +3872,15 @@ void Person::DoStuff(){ 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){ @@ -3889,10 +3896,10 @@ void Person::DoStuff(){ 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; @@ -3901,15 +3908,15 @@ void Person::DoStuff(){ if(deathbleeding<0)deathbleeding=0; if(bloodloss>damagetolerance&&animation[targetanimation].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]; @@ -3954,7 +3961,6 @@ void Person::DoStuff(){ 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; @@ -3978,7 +3984,7 @@ void Person::DoStuff(){ } } if(!osx&&detail>1){ - glBindTexture(GL_TEXTURE_2D,skeleton.drawmodel.textureptr); + skeleton.drawmodel.textureptr.bind(); DoMipmaps(); } @@ -4103,9 +4109,9 @@ void Person::DoStuff(){ 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); Sprite::MakeSprite(breathsprite, footpoint+footvel*.2,footvel*.4, 1,1,1, .4, .3); @@ -4269,11 +4275,11 @@ void Person::DoStuff(){ if(bloodtoggle&&!bled) for(l=0;l2000){ @@ -4488,11 +4485,11 @@ void Person::DoStuff(){ if(bloodtoggle&&!bled) for(l=0;l-.3){ targetanimation=getupfromfrontanim; - rotation+=180; - targetrotation+=180; + yaw+=180; + targetyaw+=180; targettilt2*=-1; targetframe=0; targettilt2=0; @@ -4641,23 +4624,23 @@ void Person::DoStuff(){ 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; + 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; } } @@ -4671,23 +4654,23 @@ void Person::DoStuff(){ for(i=0;i0)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){ @@ -4696,7 +4679,7 @@ void Person::DoStuff(){ } else{ targetanimation=backhandspringanim; - targetrotation+=180; + targetyaw+=180; targetframe=6; } target=0; @@ -4709,7 +4692,7 @@ void Person::DoStuff(){ velocity=0; - rotation=targetrotation; + yaw=targetyaw; tilt=0; targettilt=0; tilt2=0; @@ -4718,9 +4701,6 @@ void Person::DoStuff(){ } if(skeleton.freefall==0)freefall=0; - if(!isnormal(velocity.x)&&velocity.x){ - int xy=1; - } } if(aitype!=passivetype||skeleton.free==1) @@ -4806,11 +4786,11 @@ void Person::DoStuff(){ } 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.position[i].y+3*objects.scale[i]){ @@ -4918,8 +4898,8 @@ void Person::DoStuff(){ 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){ @@ -5005,13 +4985,7 @@ void Person::DoStuff(){ targetheadmorphness=1; } } - /* - if(speechdelay>.25){ - if(headmorphend!=2)headmorphness=0; - headmorphend=2; - targetheadmorphness=1; - } - */ + bool behind; behind=0; if(hasvictim){ @@ -5030,11 +5004,11 @@ void Person::DoStuff(){ } 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; } @@ -5052,7 +5026,7 @@ void Person::DoStuff(){ flatfacing=0; flatfacing.z=1; - flatfacing=DoRotation(flatfacing,0,rotation,0); + flatfacing=DoRotation(flatfacing,0,yaw,0); facing=flatfacing; ReflectVector(&facing,terrainnormal); Normalise(&facing); @@ -5368,14 +5342,14 @@ void Person::DoStuff(){ if(animation[targetanimation].attack==normalattack&&targetanimation!=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; + targetyaw=victim->targetyaw; } if(targetanimation==rabbittacklinganim){ coords=victim->coords; @@ -5415,7 +5389,7 @@ int Person::DrawSkeleton(){ 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; @@ -5449,48 +5423,48 @@ int Person::DrawSkeleton(){ 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){ 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); @@ -5498,41 +5472,41 @@ int Person::DrawSkeleton(){ } if(onterrain&&((isIdle()||isCrouch()||isLanding()||isLandhard()||targetanimation==drawrightanim||targetanimation==drawleftanim||targetanimation==crouchdrawrightanim)&&!(wasIdle()||wasCrouch()||wasLanding()||wasLandhard()||currentanimation==drawrightanim||currentanimation==drawleftanim||currentanimation==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); @@ -5541,41 +5515,41 @@ int Person::DrawSkeleton(){ if(onterrain&&(!(isIdle()||isCrouch()||isLanding()||isLandhard()||targetanimation==drawrightanim||targetanimation==drawleftanim||targetanimation==crouchdrawrightanim)&&(wasIdle()||wasCrouch()||wasLanding()||wasLandhard()||currentanimation==drawrightanim||currentanimation==drawleftanim||currentanimation==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); @@ -5585,9 +5559,9 @@ int Person::DrawSkeleton(){ 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())) DoHead(); else { - targetheadrotation=-targetrotation; - targetheadrotation2=0; - if(animation[targetanimation].attack==3)targetheadrotation+=180; + targetheadyaw=-targetyaw; + targetheadpitch=0; + if(animation[targetanimation].attack==3)targetheadyaw+=180; } for(i=0;ilabel==righthand||skeleton.muscles[j].parent2->label==righthand)&&skeleton.muscles[j].numvertices>0){ weaponattachmuscle=j; @@ -5929,7 +5903,7 @@ int Person::DrawSkeleton(){ 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;jlabel==righthand||skeleton.muscles[j].parent2->label==righthand)&&skeleton.muscles[j].numvertices>0){ weaponattachmuscle=j; @@ -5952,9 +5926,9 @@ int Person::DrawSkeleton(){ } } 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;jlabel==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; @@ -5970,30 +5944,29 @@ int Person::DrawSkeleton(){ } } } - 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; + weapons[i].smallrotation2=50; } if((currentanimation==crouchstabanim&&targetanimation==crouchstabanim)||(currentanimation==backhandspringanim&&targetanimation==backhandspringanim)){ XYZ temppoint1,temppoint2,tempforward; @@ -6002,16 +5975,16 @@ int Person::DrawSkeleton(){ temppoint1=skeleton.joints[skeleton.jointlabels[righthand]].position; temppoint2=animation[currentanimation].weapontarget[currentframe]*(1-target)+animation[targetanimation].weapontarget[targetframe]*(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)){ XYZ temppoint1,temppoint2,tempforward; @@ -6020,41 +5993,41 @@ int Person::DrawSkeleton(){ temppoint1=skeleton.joints[skeleton.jointlabels[righthand]].position; temppoint2=animation[currentanimation].weapontarget[currentframe]*(1-target)+animation[targetanimation].weapontarget[targetframe]*(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; + 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; + 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(weapons[i].getType()==sword){ + weapons[i].smallrotation=0; + weapons[i].smallrotation2=0; if(targetanimation==knifethrowanim){ - weapons.smallrotation[i]=-90; - weapons.smallrotation2[i]=0; - weapons.rotation1[i]=0; - weapons.rotation2[i]=0; - weapons.rotation3[i]=0; + 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)){ XYZ temppoint1,temppoint2,tempforward; @@ -6063,21 +6036,21 @@ int Person::DrawSkeleton(){ 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); 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(weapons[i].getType()==staff){ + weapons[i].smallrotation=100; + weapons[i].smallrotation2=0; if((targetanimation==staffhitanim&¤tanimation==staffhitanim)||(targetanimation==staffhitreversedanim&¤tanimation==staffhitreversedanim)||(targetanimation==staffspinhitreversedanim&¤tanimation==staffspinhitreversedanim)||(targetanimation==staffgroundsmashanim&¤tanimation==staffgroundsmashanim)||(targetanimation==staffspinhitanim&¤tanimation==staffspinhitanim)){ XYZ temppoint1,temppoint2,tempforward; float distance; @@ -6085,37 +6058,39 @@ int Person::DrawSkeleton(){ 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); 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(weaponstuckwhere==0) + weapons[i].smallrotation=180; + else + weapons[i].smallrotation=0; + weapons[i].smallrotation2=10; } } }