#include "Game.h"
extern float multiplier;
-extern int channels[100];
extern Terrain terrain;
extern float gravity;
extern int environment;
extern bool autoslomo;
extern float camerashake;
extern float woozy;
-extern float terraindetail;
extern float viewdistance;
extern float blackout;
extern int difficulty;
extern bool gamestarted;
+Person player[maxplayers];
+
void Person::CheckKick()
{
if (!(hasvictim
velocity=facing*-10;
velocity.y=5;
skeleton.free=0;
- if(id==0)OPENAL_SetPaused(channels[whooshsound], false);
+ if(id==0)
+ resume_stream(whooshsound);
award_bonus(id, cannon);
}
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;
}
bleeding=howmuch+(float)abs(Random()%100)/200-.25;
bleedxint=0;
bleedyint=0;
- int texdetailint=realtexdetail;
if(creature==rabbittype)
while(bloodText[bleedxint*512*3+bleedyint*3+0]>which+4||bloodText[bleedxint*512*3+bleedyint*3+0]<which-4||bleedxint<10||bleedyint<10||bleedxint>500||bleedyint>500){
bleedxint=abs(Random()%512);
offsetx=Random()%20;
}
if(which==220||which==215){
- //offsety=Random()%20;
offsetx=20;
- //offsetx=abs(Random()%80);
}
}
bool Person::DoBloodBigWhere(float howmuch,int which, XYZ where){
- static int bleedxint,bleedyint,i,j;
+ static int i,j;
static XYZ bloodvel;
static XYZ startpoint,endpoint,colpoint,movepoint;
static float rotationpoint;
if(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];
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];
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];
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];
victim->victim=this;
victim->targetrotation=targetrotation+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->targetanimation=staggerbackhighanim;
victim->targetrotation=targetrotation+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];
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);
}
targetanimation=staggerbackhighanim;
targetrotation=targetrotation+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];
skeleton.joints[j].position-=average;
}
- whichpatchx=coords.x/(terrain.size/subdivision*terrain.scale*terraindetail);
- whichpatchz=coords.z/(terrain.size/subdivision*terrain.scale*terraindetail);
+ whichpatchx=coords.x/(terrain.size/subdivision*terrain.scale);
+ whichpatchz=coords.z/(terrain.size/subdivision*terrain.scale);
if(terrain.patchobjectnum[whichpatchx][whichpatchz])
for(l=0;l<terrain.patchobjectnum[whichpatchx][whichpatchz];l++){
i=terrain.patchobjects[whichpatchx][whichpatchz][l];
if(Random()%2==0){
if(weaponactive!=-1&&targetanimation!=rabbitkickanim&&num_weapons>0){
- weapons.owner[weaponids[0]]=-1;
- weapons.hitsomething[weaponids[0]]=0;
- weapons.velocity[weaponids[0]]=skeleton.joints[skeleton.jointlabels[righthand]].velocity*scale*-.3;
- weapons.velocity[weaponids[0]].x+=.01;
- weapons.tipvelocity[weaponids[0]]=skeleton.joints[skeleton.jointlabels[righthand]].velocity*scale;
- weapons.missed[weaponids[0]]=1;
- weapons.freetime[weaponids[0]]=0;
- weapons.firstfree[weaponids[0]]=1;
- weapons.physics[weaponids[0]]=1;
+ 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];
if(targetanimation==rollanim&&targetframe==3&&onfire){
onfire=0;
emit_sound_at(fireendsound, coords);
- OPENAL_SetPaused(channels[stream_firesound], true);
+ pause_sound(stream_firesound);
deathbleeding=0;
}
}
if(!drawtogglekeydown&&drawkeydown&&(weaponactive==-1||num_weapons==1)&&(animation[targetanimation].label[targetframe]||(targetanimation!=currentanimation&¤tanimation==rollanim))&&num_weapons>0&&creature!=wolftype){
- if(weapons.type[weaponids[0]]==knife){
+ if(weapons[weaponids[0]].getType()==knife){
if(weaponactive==-1)weaponactive=0;
else if(weaponactive==0)weaponactive=-1;
targetframe++;
if(targetanimation==removeknifeanim&&animation[targetanimation].label[currentframe]==5){
- for(i=0;i<weapons.numweapons;i++){
- if(/*weapons.velocity[i].x==0&&weapons.velocity[i].y==0&&weapons.velocity[i].z==0&&*/weapons.owner[i]==-1)
- if(findDistancefastflat(&coords,&weapons.position[i])<4&&weaponactive==-1){
- if(findDistancefast(&coords,&weapons.position[i])>=1){
- if(weapons.type[i]!=staff){
+ for(i=0;i<weapons.size();i++){
+ if(weapons[i].owner==-1)
+ if(findDistancefastflat(&coords,&weapons[i].position)<4&&weaponactive==-1){
+ if(findDistancefast(&coords,&weapons[i].position)>=1){
+ if(weapons[i].getType()!=staff){
emit_sound_at(knifedrawsound, coords, 128.);
}
weaponactive=0;
- weapons.owner[i]=id;
+ weapons[i].owner=id;
if(num_weapons>0){
weaponids[num_weapons]=weaponids[0];
}
}
}
- static bool willwork;
if(targetanimation==crouchremoveknifeanim&&animation[targetanimation].label[currentframe]==5){
- for(i=0;i<weapons.numweapons;i++){
- bool willwork=1;
- if(weapons.owner[i]!=-1)
- if(player[weapons.owner[i]].weaponstuck!=-1)
- if(player[weapons.owner[i]].weaponids[player[weapons.owner[i]].weaponstuck]==i)
- if(player[weapons.owner[i]].num_weapons>1)willwork=0;
- if((/*weapons.velocity[i].x==0&&weapons.velocity[i].y==0&&weapons.velocity[i].z==0&&*/weapons.owner[i]==-1)||(hasvictim&&weapons.owner[i]==victim->id&&victim->skeleton.free))
- if(willwork&&findDistancefastflat(&coords,&weapons.position[i])<3&&weaponactive==-1){
- if(findDistancefast(&coords,&weapons.position[i])<1||hasvictim){
- bool fleshstuck=0;
- if(weapons.owner[i]!=-1)
+ for(i=0;i<weapons.size();i++){
+ bool willwork=true;
+ if(weapons[i].owner!=-1)
+ if(player[weapons[i].owner].weaponstuck!=-1)
+ if(player[weapons[i].owner].weaponids[player[weapons[i].owner].weaponstuck]==i)
+ if(player[weapons[i].owner].num_weapons>1)willwork=0;
+ if((weapons[i].owner==-1)||(hasvictim&&weapons[i].owner==victim->id&&victim->skeleton.free))
+ if(willwork&&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;
Normalise(&relative);
XYZ footvel,footpoint;
footvel=0;
- footpoint=weapons.position[i];
+ footpoint=weapons[i].position;
if(victim->weaponstuck!=-1){
if(victim->weaponids[victim->weaponstuck]==i){
if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .8, .3);
- weapons.bloody[i]=2;
- weapons.blooddrip[i]=5;
+ weapons[i].bloody=2;
+ weapons[i].blooddrip=5;
victim->weaponstuck=-1;
}
}
victim->skeleton.joints[victim->skeleton.jointlabels[rightshoulder]].velocity+=relative*6;
victim->skeleton.joints[victim->skeleton.jointlabels[leftshoulder]].velocity+=relative*6;
}
- weapons.owner[i]=id;
+ weapons[i].owner=id;
if(num_weapons>0){
weaponids[num_weapons]=weaponids[0];
}
if(!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.);
}
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);
//where=scale;
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);
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);
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);
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);
endpoint=where;
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;
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;
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);
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);
endpoint=where;
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);
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);
endpoint=where;
footpoint+=victim->coords;
if(whichtri==-1){
- footpoint=(weapons.tippoint[weaponids[weaponactive]]*.8+weapons.position[weaponids[weaponactive]]*.2);
+ footpoint=(weapons[weaponids[weaponactive]].tippoint*.8+weapons[weaponids[weaponactive]].position*.2);
}
}
hasvictim=victim->DoBloodBigWhere(2,220,footpoint);
}
}
if(!hasvictim&&onterrain){
- weapons.bloody[weaponids[weaponactive]]=0;
- weapons.blooddrip[weaponids[weaponactive]]=0;
+ weapons[weaponids[weaponactive]].bloody=0;
+ weapons[weaponids[weaponactive]].blooddrip=0;
}
}
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);
}
if(weaponactive!=-1){
escapednum=0;
XYZ aim;
- weapons.owner[weaponids[0]]=-1;
+ weapons[weaponids[0]].owner=-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);
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];
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;
}
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;
}
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);
}
victim->targetanimation=staggerbackhighanim;
victim->targetrotation=targetrotation+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];
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){
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){
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;
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];
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.);
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){
*/
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);
award_bonus(id, Stabbonus);
XYZ footvel,footpoint;
footvel=0;
- footpoint=weapons.tippoint[weaponids[0]];
+ footpoint=weapons[weaponids[0]].tippoint;
if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3);
- footvel=(weapons.tippoint[weaponids[0]]-weapons.position[weaponids[0]])*-1;
+ footvel=(weapons[weaponids[0]].tippoint-weapons[weaponids[0]].position)*-1;
Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
Sprite::MakeSprite(bloodflamesprite, footpoint,footvel*5, 1,1,1, .2, 1);
victim->bloodloss+=10000;
victim->velocity=0;
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;
}
}
}
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);
XYZ footvel,footpoint;
footvel=0;
- footpoint=(weapons.tippoint[weaponids[0]]+weapons.position[weaponids[0]])/2;
+ footpoint=(weapons[weaponids[0]].tippoint+weapons[weaponids[0]].position)/2;
if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .9, .3);
- footvel=(weapons.tippoint[weaponids[0]]-weapons.position[weaponids[0]]);
+ footvel=(weapons[weaponids[0]].tippoint-weapons[weaponids[0]].position);
Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*7,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
Sprite::MakeSprite(bloodsprite,footpoint,DoRotation(footvel*3,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .05, .9);
Sprite::MakeSprite(bloodflamesprite, footpoint,DoRotation(footvel*5,(float)(Random()%20),(float)(Random()%20),0), 1,1,1, .3, 1);
victim->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;
}
}
}
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);
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.);
targetframe=3;
velocity=facing*-8;
velocity.y=4;
- if(id==0)OPENAL_SetPaused(channels[whooshsound], false);
+ if(id==0)
+ resume_stream(whooshsound);
}
if(targetanimation==walljumprightanim){
targetanimation=rightflipanim;
velocity=facing*8;
velocity.y=4;
}
- if(id==0)OPENAL_SetPaused(channels[whooshsound], false);
+ if(id==0)
+ resume_stream(whooshsound);
}
if(targetanimation==walljumpleftanim){
if(attackkeydown){
velocity=DoRotation(facing,0,-30,0)*-8;
velocity.y=4;
}
- if(id==0)OPENAL_SetPaused(channels[whooshsound], false);
+ if(id==0)
+ resume_stream(whooshsound);
}
if(targetanimation==sneakattackanim){
- float ycoords=oldcoords.y;
currentanimation=getCrouch();
targetanimation=getCrouch();
targetframe=1;
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);
targetrotation=rotation;
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;
escapednum++;
targetanimation=rollanim;
coords+=facing;
- if(id==0)OPENAL_SetPaused(channels[whooshsound], true);
+ if(id==0)pause_sound(whooshsound);
}
lastfeint=0;
}
escapednum++;
targetanimation=rollanim;
coords+=facing*2;
- if(id==0)OPENAL_SetPaused(channels[whooshsound], true);
+ if(id==0)pause_sound(whooshsound);
}
lastfeint=0;
}
static int howmany;
static int bloodsize;
static int startx,starty,endx,endy;
- static int texdetailint;
static GLubyte color;
static XYZ bloodvel;
}
}
if(weaponactive==-1&&num_weapons>0){
- if(weapons.type[weaponids[0]]==staff){
+ if(weapons[weaponids[0]].getType()==staff){
weaponactive=0;
}
}
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];
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;
RagDoll(0);
if(weaponactive!=-1){
- weapons.owner[weaponids[0]]=-1;
- weapons.velocity[weaponids[0]]=velocity*scale*-.3;
- weapons.velocity[weaponids[0]].x+=.01;
- weapons.tipvelocity[weaponids[0]]=velocity*scale;
- weapons.missed[weaponids[0]]=1;
- weapons.hitsomething[weaponids[0]]=0;
- weapons.freetime[weaponids[0]]=0;
- weapons.firstfree[weaponids[0]]=1;
- weapons.physics[weaponids[0]]=1;
+ weapons[weaponids[0]].owner=-1;
+ weapons[weaponids[0]].velocity=velocity*scale*-.3;
+ weapons[weaponids[0]].velocity.x+=.01;
+ weapons[weaponids[0]].tipvelocity=velocity*scale;
+ weapons[weaponids[0]].missed=1;
+ weapons[weaponids[0]].hitsomething=0;
+ weapons[weaponids[0]].freetime=0;
+ weapons[weaponids[0]].firstfree=1;
+ weapons[weaponids[0]].physics=1;
num_weapons--;
if(num_weapons){
weaponids[0]=weaponids[num_weapons];
DoBlood(1,255);
if(weaponactive!=-1){
- weapons.owner[weaponids[0]]=-1;
- weapons.velocity[weaponids[0]]=velocity*scale*-.3;
- weapons.velocity[weaponids[0]].x+=.01;
- weapons.tipvelocity[weaponids[0]]=velocity*scale;
- weapons.missed[weaponids[0]]=1;
- weapons.hitsomething[weaponids[0]]=0;
- weapons.freetime[weaponids[0]]=0;
- weapons.firstfree[weaponids[0]]=1;
- weapons.physics[weaponids[0]]=1;
+ weapons[weaponids[0]].owner=-1;
+ weapons[weaponids[0]].velocity=velocity*scale*-.3;
+ weapons[weaponids[0]].velocity.x+=.01;
+ weapons[weaponids[0]].tipvelocity=velocity*scale;
+ weapons[weaponids[0]].missed=1;
+ weapons[weaponids[0]].hitsomething=0;
+ weapons[weaponids[0]].freetime=0;
+ weapons[weaponids[0]].firstfree=1;
+ weapons[weaponids[0]].physics=1;
num_weapons--;
if(num_weapons){
weaponids[0]=weaponids[num_weapons];
skeleton.free=1;
emit_sound_at(breaksound, coords);
- /*if(id==0||findDistancefast(&coords,&viewer)<50){
- slomo=1;
- slomodelay=.2;
- }*/
}
if(skeleton.free==1){
- if(id==0)OPENAL_SetPaused(channels[whooshsound], true);
+ if(id==0)pause_sound(whooshsound);
if(!dead){
//If knocked over, open hands and close mouth
velocity=0;
}
- float gLoc[3];
- float vel[3];
- gLoc[0]=coords.x;
- gLoc[1]=coords.y;
- gLoc[2]=coords.z;
- vel[0]=velocity.x;
- vel[1]=velocity.y;
- vel[2]=velocity.z;
-
if(findLength(&average)<10&&dead&&skeleton.free){
skeleton.longdead+=(2000-findLength(&average))*multiplier+multiplier;
if(skeleton.longdead>2000){
if(skeleton.longdead>6000){
- if(id==0)OPENAL_SetPaused(channels[whooshsound], true);
+ if(id==0)pause_sound(whooshsound);
skeleton.free=3;
DrawSkeleton();
skeleton.free=2;
if(findLength(&average)<10&&!dead&&skeleton.free){
skeleton.longdead+=(2000-findLength(&average))*multiplier+multiplier;
if(skeleton.longdead>(damage+500)*1.5){
- if(id==0)OPENAL_SetPaused(channels[whooshsound], true);
+ if(id==0)pause_sound(whooshsound);
skeleton.free=0;
velocity=0;
XYZ middle;
if(terrainnormal.z<0)targetrotation=180-targetrotation;
rotation=targetrotation;
- /*if(onterrain){
- terrainnormal=terrain.getNormal(coords.x,coords.z);
- targettilt2=asin(terrainnormal.y)*180/3.14*-1;
- }
- else*/
-
- /*XYZ otherterrainnormal;
- otherterrainnormal=terrain.getNormal(coords.x,coords.y);
- otherterrainnormal.y=fast_sqrt(otherterrainnormal.x*otherterrainnormal.x+otherterrainnormal.z*otherterrainnormal.z)*-1;
- if(abs(terrainnormal.y)<abs(otherterrainnormal.y))terrainnormal.y=fast_sqrt(otherterrainnormal.x*otherterrainnormal.x+otherterrainnormal.z*otherterrainnormal.z)*-1;
- targettilt2=asin(otherterrainnormal.y)*180/3.14;
- */
-
targettilt2=asin(terrainnormal.y)*180/3.14*-1;
-
if(skeleton.forward.y<0){
targetanimation=getupfrombackanim;
targetframe=0;
bool hasstaff;
hasstaff=0;
- if(num_weapons>0)if(weapons.type[0]==staff)hasstaff=1;
+ if(num_weapons>0)if(weapons[0].getType()==staff)hasstaff=1;
if(!skeleton.freefall&&freefall&&((jumpkeydown&&jumpkeydowntime<.2)||(hasstaff&&rabbitkickragdoll))&&!dead){
if(velocity.y>-30){
XYZ tempvelocity;
}
if(skeleton.freefall==0)freefall=0;
- if(!isnormal(velocity.x)&&velocity.x){
- int xy=1;
- }
}
if(aitype!=passivetype||skeleton.free==1)
targetheadmorphness=1;
}
}
- /*
- if(speechdelay>.25){
- if(headmorphend!=2)headmorphness=0;
- headmorphend=2;
- targetheadmorphness=1;
- }
- */
+
bool behind;
behind=0;
if(hasvictim){
}
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;
}
onterrain=1;
if(id==0){
- OPENAL_SetPaused(channels[whooshsound], true);
+ pause_sound(whooshsound);
OPENAL_SetVolume(channels[whooshsound], 0);
}
static float M[16];
static int i,j,k;
static int weaponattachmuscle;
- static int weaponrotatemuscle,weaponrotatemuscle2;
+ static int weaponrotatemuscle;
static XYZ weaponpoint;
static int start,endthing;
if((dead!=2||skeleton.free!=2)&&updatedelay<=0){
skeleton.muscles[i].lastrotate3=skeleton.muscles[i].rotate3;
glRotatef(-skeleton.muscles[i].lastrotate3,0,1,0);
- /*
- if(!isnormal(proportionbody.x)||!isnormal(proportionbody.y)||!isnormal(proportionbody.z)){
- proportionbody=1;
- proportionweird=1;
- }
- if(!isnormal(proportionarms.x)||!isnormal(proportionarms.y)||!isnormal(proportionarms.z)){
- proportionarms=1;
- proportionweird=1;
- }
- if(!isnormal(proportionhead.x)||!isnormal(proportionhead.y)||!isnormal(proportionhead.z)){
- proportionhead=1;
- proportionweird=1;
- }
- if(!isnormal(proportionlegs.x)||!isnormal(proportionlegs.y)||!isnormal(proportionlegs.z)){
- proportionlegs=1;
- proportionweird=1;
- }*/
if(playerdetail||skeleton.free==3)
{
for(j=0;j<skeleton.muscles[i].numvertices;j++)
{
- /*if(!isnormal(skeleton.model[start].vertex[skeleton.muscles[i].vertices[j]].x))vertexweird[0]=1;
- if(!isnormal(skeleton.model[start].vertex[skeleton.muscles[i].vertices[j]].y))vertexweird[1]=1;
- if(!isnormal(skeleton.model[start].vertex[skeleton.muscles[i].vertices[j]].z))vertexweird[2]=1;
- if(!isnormal(skeleton.model[endthing].vertex[skeleton.muscles[i].vertices[j]].x))vertexweird[3]=1;
- if(!isnormal(skeleton.model[endthing].vertex[skeleton.muscles[i].vertices[j]].y))vertexweird[4]=1;
- if(!isnormal(skeleton.model[endthing].vertex[skeleton.muscles[i].vertices[j]].z))vertexweird[5]=1;
- if(skeleton.muscles[i].vertices[j]<skeleton.model[start].vertexNum&&skeleton.muscles[i].vertices[j]>=0){*/
glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix
glPushMatrix();
if(skeleton.muscles[i].parent1->label==abdomen||skeleton.muscles[i].parent2->label==abdomen)
for(k=0;k<num_weapons;k++){
i=weaponids[k];
if(weaponactive==k){
- if(weapons.type[i]!=staff){
+ if(weapons[i].getType()!=staff){
for(j=0;j<skeleton.num_muscles;j++){
if((skeleton.muscles[j].parent1->label==righthand||skeleton.muscles[j].parent2->label==righthand)&&skeleton.muscles[j].numvertices>0){
weaponattachmuscle=j;
weaponpoint=(skeleton.muscles[weaponattachmuscle].parent1->position+skeleton.muscles[weaponattachmuscle].parent2->position)/2;
if(creature==wolftype)weaponpoint=(skeleton.joints[skeleton.jointlabels[rightwrist]].position*.7+skeleton.joints[skeleton.jointlabels[righthand]].position*.3);
}
- if(weapons.type[i]==staff){
+ if(weapons[i].getType()==staff){
for(j=0;j<skeleton.num_muscles;j++){
if((skeleton.muscles[j].parent1->label==righthand||skeleton.muscles[j].parent2->label==righthand)&&skeleton.muscles[j].numvertices>0){
weaponattachmuscle=j;
CrossProduct(&vec1,&vec2,&tempnormthing);
Normalise(&tempnormthing);
if(targetanimation!=staffhitanim&¤tanimation!=staffhitanim&&targetanimation!=staffgroundsmashanim&¤tanimation!=staffgroundsmashanim&&targetanimation!=staffspinhitanim&¤tanimation!=staffspinhitanim)weaponpoint+=tempnormthing*.1-skeleton.specialforward[1]*.3+(skeleton.joints[skeleton.jointlabels[rightwrist]].position-skeleton.joints[skeleton.jointlabels[rightelbow]].position);
- /*if(targetanimation==staffhitanim||currentanimation==staffhitanim){
- XYZ weaptargnorm;
- weaptargnorm=DoRotation(weapons.tippoint[i]-weapons.position[i],0,-rotation,0);
- //weaptargnorm=animation[currentanimation].weapontarget[currentframe]*(1-target)+animation[targetanimation].weapontarget[targetframe]*(target);
- Normalise(&weaptargnorm);
- weaponpoint-=weaptargnorm*2;
- }*/
}
}
if(weaponactive!=k&&weaponstuck!=k){
- if(weapons.type[i]==knife)weaponpoint=skeleton.joints[skeleton.jointlabels[abdomen]].position+(skeleton.joints[skeleton.jointlabels[righthip]].position-skeleton.joints[skeleton.jointlabels[lefthip]].position)*.1+(skeleton.joints[skeleton.jointlabels[rightshoulder]].position-skeleton.joints[skeleton.jointlabels[leftshoulder]].position)*.35;
- if(weapons.type[i]==sword)weaponpoint=skeleton.joints[skeleton.jointlabels[abdomen]].position+(skeleton.joints[skeleton.jointlabels[lefthip]].position-skeleton.joints[skeleton.jointlabels[righthip]].position)*.09+(skeleton.joints[skeleton.jointlabels[leftshoulder]].position-skeleton.joints[skeleton.jointlabels[rightshoulder]].position)*.33;
- if(weapons.type[i]==staff)weaponpoint=skeleton.joints[skeleton.jointlabels[abdomen]].position+(skeleton.joints[skeleton.jointlabels[lefthip]].position-skeleton.joints[skeleton.jointlabels[righthip]].position)*.09+(skeleton.joints[skeleton.jointlabels[leftshoulder]].position-skeleton.joints[skeleton.jointlabels[rightshoulder]].position)*.33;
+ if(weapons[i].getType()==knife)weaponpoint=skeleton.joints[skeleton.jointlabels[abdomen]].position+(skeleton.joints[skeleton.jointlabels[righthip]].position-skeleton.joints[skeleton.jointlabels[lefthip]].position)*.1+(skeleton.joints[skeleton.jointlabels[rightshoulder]].position-skeleton.joints[skeleton.jointlabels[leftshoulder]].position)*.35;
+ if(weapons[i].getType()==sword)weaponpoint=skeleton.joints[skeleton.jointlabels[abdomen]].position+(skeleton.joints[skeleton.jointlabels[lefthip]].position-skeleton.joints[skeleton.jointlabels[righthip]].position)*.09+(skeleton.joints[skeleton.jointlabels[leftshoulder]].position-skeleton.joints[skeleton.jointlabels[rightshoulder]].position)*.33;
+ if(weapons[i].getType()==staff)weaponpoint=skeleton.joints[skeleton.jointlabels[abdomen]].position+(skeleton.joints[skeleton.jointlabels[lefthip]].position-skeleton.joints[skeleton.jointlabels[righthip]].position)*.09+(skeleton.joints[skeleton.jointlabels[leftshoulder]].position-skeleton.joints[skeleton.jointlabels[rightshoulder]].position)*.33;
for(j=0;j<skeleton.num_muscles;j++){
if((skeleton.muscles[j].parent1->label==abdomen||skeleton.muscles[j].parent2->label==abdomen)&&(skeleton.muscles[j].parent1->label==neck||skeleton.muscles[j].parent2->label==neck)&&skeleton.muscles[j].numvertices>0){
weaponrotatemuscle=j;
}
}
}
- if(!skeleton.free){
- weapons.position[i]=DoRotation(DoRotation(DoRotation(weaponpoint,0,0,tilt),tilt2,0,0),0,rotation,0)*scale+coords+currentoffset*(1-target)*scale+targetoffset*target*scale;
- weapons.bigrotation[i]=rotation;
- weapons.bigtilt[i]=tilt;
- weapons.bigtilt2[i]=tilt2;
- }
if(skeleton.free){
- weapons.position[i]=weaponpoint*scale+coords;
- weapons.bigrotation[i]=0;
- weapons.bigtilt[i]=0;
- weapons.bigtilt2[i]=0;
+ weapons[i].position=weaponpoint*scale+coords;
+ weapons[i].bigrotation=0;
+ weapons[i].bigtilt=0;
+ weapons[i].bigtilt2=0;
+ } else {
+ weapons[i].position=DoRotation(DoRotation(DoRotation(weaponpoint,0,0,tilt),tilt2,0,0),0,rotation,0)*scale+coords+currentoffset*(1-target)*scale+targetoffset*target*scale;
+ weapons[i].bigrotation=rotation;
+ 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;
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;
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;
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;
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;
}
}
}
onterrain=1;
if(id==0){
- OPENAL_SetPaused(channels[whooshsound], true);
+ pause_sound(whooshsound);
OPENAL_SetVolume(channels[whooshsound], 0);
}