int howmany;
for (int i = 0; i < 10; i++) {
howmany = abs(Random() % (skeleton.num_joints));
- if (!skeleton.free)
- flatvelocity = velocity;
- if (skeleton.free)
+ 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, yaw, 0) * scale + coords;
- if (skeleton.free)
flatfacing = skeleton.joints[howmany].position * scale + coords;
+ } else {
+ flatvelocity = velocity;
+ flatfacing = DoRotation(DoRotation(DoRotation(skeleton.joints[howmany].position, 0, 0, tilt), tilt2, 0, 0), 0, yaw, 0) * scale + coords;
+ }
Sprite::MakeSprite(flamesprite, flatfacing, flatvelocity, 1, 1, 1, 2, 1);
}
for (int i = 0; i < 3; i++) {
// emit blood particles
bloodvel = 0;
- if (!skeleton.free) {
- bloodvel.z = 10;
- 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(jointVel(head), ((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, jointPos(head) * scale + coords, bloodvel, 1, 1, 1, .05, 1);
Sprite::MakeSprite(bloodflamesprite, jointPos(head) * scale + coords, bloodvel, 1, 1, 1, .3, 1);
- }
- if (!skeleton.free) {
+ } else {
+ bloodvel.z = 10;
+ 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;
Sprite::MakeSprite(bloodsprite, DoRotation((jointPos(head) + jointPos(neck)) / 2, 0, yaw, 0)*scale + coords, bloodvel, 1, 1, 1, .05, 1);
Sprite::MakeSprite(bloodflamesprite, DoRotation((jointPos(head) + jointPos(neck)) / 2, 0, yaw, 0)*scale + coords, bloodvel, 1, 1, 1, .3, 1);
}
// emit blood particles
// FIXME: copypaste from above
bloodvel = 0;
- if (!skeleton.free) {
- bloodvel.z = 10;
- 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(jointVel(head), ((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, jointPos(head) * scale + coords, bloodvel, 1, 1, 1, .05, 1);
Sprite::MakeSprite(bloodflamesprite, jointPos(head) * scale + coords, bloodvel, 1, 1, 1, .3, 1);
- }
- if (!skeleton.free) {
+ } else {
+ bloodvel.z = 10;
+ 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;
Sprite::MakeSprite(bloodsprite, DoRotation((jointPos(head) + jointPos(neck)) / 2, 0, yaw, 0)*scale + coords, bloodvel, 1, 1, 1, .05, 1);
Sprite::MakeSprite(bloodflamesprite, DoRotation((jointPos(head) + jointPos(neck)) / 2, 0, yaw, 0)*scale + coords, bloodvel, 1, 1, 1, .3, 1);
}
static float rotationpoint;
static int whichtri;
static XYZ p1, p2, p3, p0;
- static XYZ N, temp;
XYZ bary;
XYZ gxx, gyy;
float coordsx, coordsy;
p1 = skeleton.drawmodel.vertex[skeleton.drawmodel.Triangles[whichtri].vertex[0]];
p2 = skeleton.drawmodel.vertex[skeleton.drawmodel.Triangles[whichtri].vertex[1]];
p3 = skeleton.drawmodel.vertex[skeleton.drawmodel.Triangles[whichtri].vertex[2]];
- /*
- CrossProduct(p2-p1,p3-p1,&N);
- CrossProduct(p0-p1,p3-p1,&temp);
- s = dotproduct(&temp,&N)/findLength(&N);
- CrossProduct(p2-p1,p1-p0,&temp);
- t = dotproduct(&temp,&N)/findLength(&N);
- r = 1 - (s + t);*/
bary.x = distsq(&p0, &p1);
bary.y = distsq(&p0, &p2);
coordsx = skeleton.drawmodel.Triangles[whichtri].gx[0] * bary.x + skeleton.drawmodel.Triangles[whichtri].gx[1] * bary.y + skeleton.drawmodel.Triangles[whichtri].gx[2] * bary.z;
coordsy = skeleton.drawmodel.Triangles[whichtri].gy[0] * bary.x + skeleton.drawmodel.Triangles[whichtri].gy[1] * bary.y + skeleton.drawmodel.Triangles[whichtri].gy[2] * bary.z;
- //coordsx=skeleton.drawmodel.Triangles[whichtri].gx[1];
- //coordsy=skeleton.drawmodel.Triangles[whichtri].gy[1];
-
if (bleeding <= 0 && spurt) {
spurt = 0;
for (int i = 0; i < 3; i++) {
// emit blood particles
// FIXME: more copypaste code
bloodvel = 0;
- if (!skeleton.free) {
- bloodvel.z = 10;
- 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(jointVel(head), ((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, jointPos(head) * scale + coords, bloodvel, 1, 1, 1, .05, 1);
Sprite::MakeSprite(bloodflamesprite, jointPos(head) * scale + coords, bloodvel, 1, 1, 1, .3, 1);
- }
- if (!skeleton.free) {
+ } else {
+ bloodvel.z = 10;
+ 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;
Sprite::MakeSprite(bloodsprite, DoRotation((jointPos(head) + jointPos(neck)) / 2, 0, yaw, 0)*scale + coords, bloodvel, 1, 1, 1, .05, 1);
Sprite::MakeSprite(bloodflamesprite, DoRotation((jointPos(head) + jointPos(neck)) / 2, 0, yaw, 0)*scale + coords, bloodvel, 1, 1, 1, .3, 1);
}
XYZ flatvelocity2;
XYZ flatfacing2;
for (int i = 0; i < skeleton.num_joints; i++) {
- if (!skeleton.free)
- flatvelocity2 = velocity;
- if (skeleton.free)
+ if (skeleton.free) {
flatvelocity2 = skeleton.joints[i].velocity;
- if (!skeleton.free)
- flatfacing2 = DoRotation(DoRotation(DoRotation(skeleton.joints[i].position, 0, 0, tilt), tilt2, 0, 0), 0, yaw, 0) * scale + coords;
- if (skeleton.free)
flatfacing2 = skeleton.joints[i].position * scale + coords;
+ } else {
+ flatvelocity2 = velocity;
+ flatfacing2 = DoRotation(DoRotation(DoRotation(skeleton.joints[i].position, 0, 0, tilt), tilt2, 0, 0), 0, yaw, 0) * scale + coords;
+ }
flatvelocity2.x += (float)(abs(Random() % 100) - 50) / 10;
flatvelocity2.y += (float)(abs(Random() % 100) - 50) / 10;
flatvelocity2.z += (float)(abs(Random() % 100) - 50) / 10;
emit_sound_at(knifedrawsound, coords, 128.);
}
- weaponactive = 0;
- weapons[i].owner = id;
- if (num_weapons > 0) {
- weaponids[num_weapons] = weaponids[0];
- }
- num_weapons++;
- weaponids[0] = i;
+ takeWeapon(i);
}
}
}
emit_sound_at(knifedrawsound, coords, 128.);
}
}
- weaponactive = 0;
if (weapons[i].owner != -1) {
-
victim = Person::players[weapons[i].owner];
if (victim->num_weapons == 1)
victim->num_weapons = 0;
victim->jointVel(rightshoulder) += relative * 6;
victim->jointVel(leftshoulder) += relative * 6;
}
- weapons[i].owner = id;
- if (num_weapons > 0) {
- weaponids[num_weapons] = weaponids[0];
- }
- num_weapons++;
- weaponids[0] = i;
+ takeWeapon(i);
}
}
}
footvel = 0;
if (skeleton.free) {
footpoint = (victim->jointPos(abdomen) + victim->jointPos(neck)) / 2 * victim->scale + victim->coords;
- }
- if (!skeleton.free) {
+ } else {
footpoint = DoRotation((victim->jointPos(abdomen) + victim->jointPos(neck)) / 2, 0, victim->yaw, 0) * victim->scale + victim->coords;
}
if (tutoriallevel != 1) {
footvel = 0;
if (skeleton.free) {
footpoint = (victim->jointPos(abdomen) + victim->jointPos(neck)) / 2 * victim->scale + victim->coords;
- }
- if (!skeleton.free) {
+ } else {
footpoint = DoRotation((victim->jointPos(abdomen) + victim->jointPos(neck)) / 2, 0, victim->yaw, 0) * victim->scale + victim->coords;
}
if (bloodtoggle)
if ((animTarget == swordslashreversalanim || animTarget == knifeslashreversalanim || animTarget == staffhitreversalanim || animTarget == staffspinhitreversalanim) && animation[animTarget].label[frameCurrent] == 5) {
if (victim->weaponactive != -1 && victim->num_weapons > 0) {
if (weapons[victim->weaponids[victim->weaponactive]].owner == int(victim->id)) {
- weapons[victim->weaponids[victim->weaponactive]].owner = id;
- weaponactive = 0;
- if (num_weapons > 0) {
- weaponids[num_weapons] = weaponids[victim->weaponactive];
- }
- num_weapons++;
- weaponids[0] = victim->weaponids[victim->weaponactive];
+ takeWeapon(victim->weaponids[victim->weaponactive]);
victim->num_weapons--;
if (victim->num_weapons > 0) {
victim->weaponids[victim->weaponactive] = victim->weaponids[victim->num_weapons];
while (flamedelay < 0 && onfire) {
flamedelay += .006;
howmany = abs(Random() % (skeleton.num_joints));
- if (!skeleton.free)
- flatvelocity = (coords - oldcoords) / multiplier / 2; //velocity/2;
- if (skeleton.free)
+ 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, yaw, 0) * scale + coords;
- if (skeleton.free)
flatfacing = skeleton.joints[howmany].position * scale + coords;
+ } else {
+ flatfacing = DoRotation(DoRotation(DoRotation(skeleton.joints[howmany].position, 0, 0, tilt), tilt2, 0, 0), 0, yaw, 0) * scale + coords;
+ flatvelocity = (coords - oldcoords) / multiplier / 2;
+ }
Sprite::MakeSprite(flamesprite, flatfacing, flatvelocity, 1, 1, 1, .6 + (float)abs(Random() % 100) / 200 - .25, 1);
}
while (flamedelay < 0 && !onfire && tutoriallevel == 1 && id != 0) {
flamedelay += .05;
howmany = abs(Random() % (skeleton.num_joints));
- if (!skeleton.free)
- flatvelocity = (coords - oldcoords) / multiplier / 2; //velocity/2;
- if (skeleton.free)
+ 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, yaw, 0) * scale + coords;
- if (skeleton.free)
flatfacing = skeleton.joints[howmany].position * scale + coords;
+ } else {
+ flatvelocity = (coords - oldcoords) / multiplier / 2;
+ flatfacing = DoRotation(DoRotation(DoRotation(skeleton.joints[howmany].position, 0, 0, tilt), tilt2, 0, 0), 0, yaw, 0) * scale + coords;
+ }
Sprite::MakeSprite(breathsprite, flatfacing, flatvelocity, 1, 1, 1, .6 + (float)abs(Random() % 100) / 200 - .25, .3);
}
if (neckspurtparticledelay < 0 && neckspurtdelay > 2) {
spurt = 0;
bloodvel = 0;
- if (!skeleton.free) {
- bloodvel.z = 5 * neckspurtamount;
- 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(jointVel(head), ((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, (jointPos(neck) + (jointPos(neck) - jointPos(head)) / 5)*scale + coords, bloodvel, 1, 1, 1, .05, .9);
- if (!skeleton.free)
+ } else {
+ bloodvel.z = 5 * neckspurtamount;
+ bloodvel = DoRotation(bloodvel, ((float)(Random() % 100)) / 40, yaw + ((float)(Random() % 100)) / 40, 0) * scale;
+ bloodvel += DoRotation(velocity, ((float)(Random() % 100)) / 40, ((float)(Random() % 100)) / 40, 0) * scale;
Sprite::MakeSprite(bloodsprite, DoRotation(jointPos(neck) + (jointPos(neck) - jointPos(head)) / 5, 0, yaw, 0)*scale + coords, bloodvel, 1, 1, 1, .05, .9);
+ }
neckspurtparticledelay = .05;
}
if (neckspurtdelay < 0) {
XYZ bloodvel;
if (bloodtoggle) {
bloodvel = 0;
- if (skeleton.free)
+ if (skeleton.free) {
bloodvel += DoRotation(jointVel(abdomen), ((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, jointPos(abdomen) * scale + coords, bloodvel, 1, 1, 1, .05, 1);
- if (!skeleton.free)
+ } else {
+ bloodvel += DoRotation(velocity, ((float)(Random() % 100)) / 4, ((float)(Random() % 100)) / 4, 0) * scale;
Sprite::MakeSprite(bloodsprite, DoRotation((jointPos(abdomen) + jointPos(abdomen)) / 2, 0, yaw, 0)*scale + coords, bloodvel, 1, 1, 1, .05, 1);
+ }
}
}
bloodloss += deathbleeding * multiplier * 80;
DoMipmaps();
}
- if (!skeleton.free) {
- bleedy -= 4 / realtexdetail;
- if (detail == 2)
- bleedx += (abs(Random() % 3) - 1) * 2 / realtexdetail;
- else
- bleedx += (abs(Random() % 3) - 1) * 4 / realtexdetail;
- }
if (skeleton.free) {
bleedx += 4 * direction / realtexdetail;
if (detail == 2)
bleedy += (abs(Random() % 3) - 1) * 2 / realtexdetail;
else
bleedy += (abs(Random() % 3) - 1) * 4 / realtexdetail;
+ } else {
+ bleedy -= 4 / realtexdetail;
+ if (detail == 2)
+ bleedx += (abs(Random() % 3) - 1) * 2 / realtexdetail;
+ else
+ bleedx += (abs(Random() % 3) - 1) * 4 / realtexdetail;
}
}
if (environment == snowyenvironment) {
XYZ footpoint;
XYZ footvel;
- if (!skeleton.free)
- footvel = DoRotation(skeleton.specialforward[0], 0, yaw, 0) * -1;
- if (skeleton.free)
+ if (skeleton.free) {
footvel = skeleton.specialforward[0] * -1;
- if (!skeleton.free)
- footpoint = DoRotation((jointPos(head) + jointPos(neck)) / 2, 0, yaw, 0) * scale + coords;
- if (skeleton.free)
footpoint = ((jointPos(head) + jointPos(neck)) / 2) * scale + coords;
+ } else {
+ footvel = DoRotation(skeleton.specialforward[0], 0, yaw, 0) * -1;
+ footpoint = DoRotation((jointPos(head) + jointPos(neck)) / 2, 0, yaw, 0) * scale + coords;
+ }
if (animTarget == sleepanim)
footvel = DoRotation(footvel, 0, 90, 0);
Sprite::MakeSprite(breathsprite, footpoint + footvel * .2, footvel * .4, 1, 1, 1, .4, .3);
}
average /= multiplier;
- //velocity=jointVel(groin)*scale;
velocity = 0;
for (int i = 0; i < skeleton.num_joints; i++) {
velocity += skeleton.joints[i].velocity * scale;
if (hasvictim) {
if ((victim != this->shared_from_this()) && !victim->dead && (victim->aitype != passivetype) &&
(victim->aitype != searchtype) && (aitype != passivetype) &&
- (aitype != searchtype) && (victim->id < Person::players.size()) && (aitype != passivetype)) {
+ (aitype != searchtype) && (victim->id < Person::players.size())) {
behind = (normaldotproduct(facing, coords - victim->coords) > 0);
}
}
*/
void IKHelper(Person *p, float interp)
{
- XYZ point, newpoint, change, change2;
+ XYZ point, change, change2;
float heightleft, heightright;
// TODO: implement localToWorld and worldToLocal
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
- if (!skeleton.free)
- glTranslatef(coords.x, coords.y - .02, coords.z);
- if (skeleton.free)
- glTranslatef(coords.x, coords.y - .02, coords.z);
- if (!skeleton.free)
+ glTranslatef(coords.x, coords.y - .02, coords.z);
+ if (!skeleton.free) {
glTranslatef(offset.x * scale, offset.y * scale, offset.z * scale);
- if (!skeleton.free)
glRotatef(yaw, 0, 1, 0);
+ }
if (showpoints) {
glPointSize(5);
glColor4f(.4, 1, .4, 1);
weapons[i].smallrotation2 = 50;
}
if ((animCurrent == crouchstabanim && animTarget == crouchstabanim) || (animCurrent == backhandspringanim && animTarget == backhandspringanim)) {
- XYZ temppoint1, temppoint2, tempforward;
+ XYZ temppoint1, temppoint2;
float distance;
temppoint1 = jointPos(righthand);
weapons[i].rotation1 = 360 - weapons[i].rotation1;
}
if ((animCurrent == knifeslashreversalanim && animTarget == knifeslashreversalanim) || (animCurrent == knifeslashreversedanim && animTarget == knifeslashreversedanim)) {
- XYZ temppoint1, temppoint2, tempforward;
+ XYZ temppoint1, temppoint2;
float distance;
temppoint1 = jointPos(righthand);
weapons[i].rotation3 = 0;
}
if ((animTarget == swordgroundstabanim && animCurrent == swordgroundstabanim) || (animTarget == swordsneakattackanim && animCurrent == swordsneakattackanim) || (animTarget == swordslashparryanim && animCurrent == swordslashparryanim) || (animTarget == swordslashparriedanim && animCurrent == swordslashparriedanim) || (animTarget == swordslashreversalanim && animCurrent == swordslashreversalanim) || (animTarget == swordslashreversedanim && animCurrent == swordslashreversedanim) || (animTarget == knifeslashreversalanim && animCurrent == knifeslashreversalanim) || (animTarget == knifeslashreversedanim && animCurrent == knifeslashreversedanim) || (animTarget == swordslashanim && animCurrent == swordslashanim) || (animTarget == drawleftanim && animCurrent == drawleftanim) || (animCurrent == backhandspringanim && animTarget == backhandspringanim)) {
- XYZ temppoint1, temppoint2, tempforward;
+ XYZ temppoint1, temppoint2;
float distance;
temppoint1 = animation[animCurrent].position[skeleton.jointlabels[righthand]][frameCurrent] * (1 - target) + animation[animTarget].position[skeleton.jointlabels[righthand]][frameTarget] * (target); //jointPos(righthand);
weapons[i].smallrotation = 100;
weapons[i].smallrotation2 = 0;
if ((animTarget == staffhitanim && animCurrent == staffhitanim) || (animTarget == staffhitreversedanim && animCurrent == staffhitreversedanim) || (animTarget == staffspinhitreversedanim && animCurrent == staffspinhitreversedanim) || (animTarget == staffgroundsmashanim && animCurrent == staffgroundsmashanim) || (animTarget == staffspinhitanim && animCurrent == staffspinhitanim)) {
- XYZ temppoint1, temppoint2, tempforward;
+ XYZ temppoint1, temppoint2;
float distance;
temppoint1 = animation[animCurrent].position[skeleton.jointlabels[righthand]][frameCurrent] * (1 - target) + animation[animTarget].position[skeleton.jointlabels[righthand]][frameTarget] * (target); //jointPos(righthand);
calcrot = 0;
if (skeleton.free)
calcrot = 1;
- if (animation[animTarget].attack || isRun() || animTarget == staggerbackhardanim || isFlip() || animTarget == climbanim || animTarget == sneakanim || animTarget == rollanim || animTarget == walkanim || animTarget == backhandspringanim || isFlip() || isWallJump())
+ if (animation[animTarget].attack || isRun() || animTarget == staggerbackhardanim || isFlip() || animTarget == climbanim || animTarget == sneakanim || animTarget == rollanim || animTarget == walkanim || animTarget == backhandspringanim || isWallJump())
calcrot = 1;
if (animCurrent != animTarget)
calcrot = 1;
return firstintersecting;
}
+void Person::takeWeapon(int weaponId)
+{
+ weaponactive = 0;
+ weapons[weaponId].owner = id;
+ if (num_weapons > 0) {
+ weaponids[num_weapons] = weaponids[0];
+ }
+ num_weapons++;
+ weaponids[0] = weaponId;
+}
+