-
- Person::players[i]->tempanimation.Load((char *)"Tempanim", 0, 0);
-
- Person::players[i]->headmorphness = 0;
- Person::players[i]->targetheadmorphness = 1;
- Person::players[i]->headmorphstart = 0;
- Person::players[i]->headmorphend = 0;
-
- Person::players[i]->pausetime = 0;
-
- Person::players[i]->dead = 0;
- Person::players[i]->jumppower = 5;
- Person::players[i]->damage = 0;
- Person::players[i]->permanentdamage = 0;
- Person::players[i]->superpermanentdamage = 0;
-
- Person::players[i]->forwardkeydown = 0;
- Person::players[i]->leftkeydown = 0;
- Person::players[i]->backkeydown = 0;
- Person::players[i]->rightkeydown = 0;
- Person::players[i]->jumpkeydown = 0;
- Person::players[i]->crouchkeydown = 0;
- Person::players[i]->throwkeydown = 0;
-
- Person::players[i]->collided = -10;
- Person::players[i]->loaded = 1;
- Person::players[i]->bloodloss = 0;
- Person::players[i]->weaponactive = -1;
- Person::players[i]->weaponstuck = -1;
- Person::players[i]->bleeding = 0;
- Person::players[i]->deathbleeding = 0;
- Person::players[i]->stunned = 0;
- Person::players[i]->hasvictim = 0;
- Person::players[i]->wentforweapon = 0;
- }
-
- Person::players[0]->aitype = playercontrolled;
- Person::players[0]->weaponactive = -1;
-
- if (difficulty == 1)
- Person::players[0]->power = 1 / .9;
-
- if (difficulty == 0)
- Person::players[0]->power = 1 / .8;
-
- if (difficulty == 1)
- Person::players[0]->damagetolerance = 250;
- if (difficulty == 0)
- Person::players[0]->damagetolerance = 300;
- if (difficulty == 0)
- Person::players[0]->armorhead *= 1.5;
- if (difficulty == 0)
- Person::players[0]->armorhigh *= 1.5;
- if (difficulty == 0)
- Person::players[0]->armorlow *= 1.5;
- cameraloc = Person::players[0]->coords;
- cameraloc.y += 5;
- yaw = Person::players[0]->yaw;
-
- hawkcoords = Person::players[0]->coords;
- hawkcoords.y += 30;
-
- if (visibleloading)
- LoadingScreen();
-
- LOG("Starting background music...");
-
- OPENAL_StopSound(OPENAL_ALL);
- if (environment == snowyenvironment) {
- if (ambientsound)
- emit_stream_np(stream_wind);
- } else if (environment == desertenvironment) {
- if (ambientsound)
- emit_stream_np(stream_desertambient);
- } else if (environment == grassyenvironment) {
- if (ambientsound)
- emit_stream_np(stream_wind, 100.);
- }
- oldmusicvolume[0] = 0;
- oldmusicvolume[1] = 0;
- oldmusicvolume[2] = 0;
- oldmusicvolume[3] = 0;
-
- if (!firstload)
- firstload = 1;
- } else {
- perror("Problem");
- }
- leveltime = 0;
- loadingstuff = 0;
- visibleloading = 0;
-}
-
-void doTutorial()
-{
- if (tutorialstagetime > tutorialmaxtime) {
- tutorialstage++;
- tutorialsuccess = 0;
- if (tutorialstage <= 1) {
- canattack = 0;
- cananger = 0;
- reversaltrain = 0;
- }
- switch (tutorialstage) {
- case 1:
- tutorialmaxtime = 5;
- break;
- case 2:
- tutorialmaxtime = 2;
- break;
- case 3:
- tutorialmaxtime = 600;
- break;
- case 4:
- tutorialmaxtime = 1000;
- break;
- case 5:
- tutorialmaxtime = 600;
- break;
- case 6:
- tutorialmaxtime = 600;
- break;
- case 7:
- tutorialmaxtime = 600;
- break;
- case 8:
- tutorialmaxtime = 600;
- break;
- case 9:
- tutorialmaxtime = 600;
- break;
- case 10:
- tutorialmaxtime = 2;
- break;
- case 11:
- tutorialmaxtime = 1000;
- break;
- case 12:
- tutorialmaxtime = 1000;
- break;
- case 13:
- tutorialmaxtime = 2;
- break;
- case 14: {
- tutorialmaxtime = 3;
-
- XYZ temp, temp2;
-
- temp.x = 1011;
- temp.y = 84;
- temp.z = 491;
- temp2.x = 1025;
- temp2.y = 75;
- temp2.z = 447;
-
- Person::players[1]->coords = (temp + temp2) / 2;
-
- emit_sound_at(fireendsound, Person::players[1]->coords);
-
- for (int i = 0; i < Person::players[1]->skeleton.num_joints; i++) {
- if (Random() % 2 == 0) {
- if (!Person::players[1]->skeleton.free)
- temp2 = (Person::players[1]->coords - Person::players[1]->oldcoords) / multiplier / 2; //velocity/2;
- if (Person::players[1]->skeleton.free)
- temp2 = Person::players[1]->skeleton.joints[i].velocity * Person::players[1]->scale / 2;
- if (!Person::players[1]->skeleton.free)
- temp = DoRotation(DoRotation(DoRotation(Person::players[1]->skeleton.joints[i].position, 0, 0, Person::players[1]->tilt), Person::players[1]->tilt2, 0, 0), 0, Person::players[1]->yaw, 0) * Person::players[1]->scale + Person::players[1]->coords;
- if (Person::players[1]->skeleton.free)
- temp = Person::players[1]->skeleton.joints[i].position * Person::players[1]->scale + Person::players[1]->coords;
- Sprite::MakeSprite(breathsprite, temp, temp2, 1, 1, 1, .6 + (float)abs(Random() % 100) / 200 - .25, 1);
- }
- }
- }
- break;
- case 15:
- tutorialmaxtime = 500;
- break;
- case 16:
- tutorialmaxtime = 500;
- break;
- case 17:
- tutorialmaxtime = 500;
- break;
- case 18:
- tutorialmaxtime = 500;
- break;
- case 19:
- tutorialstage = 20;
- //tutorialmaxtime=500;
- break;
- case 20:
- tutorialmaxtime = 500;
- break;
- case 21:
- tutorialmaxtime = 500;
- if (bonus == cannon) {
- bonus = Slicebonus;
- againbonus = 1;
- } else
- againbonus = 0;
- break;
- case 22:
- tutorialmaxtime = 500;
- break;
- case 23:
- tutorialmaxtime = 500;
- break;
- case 24:
- tutorialmaxtime = 500;
- break;
- case 25:
- tutorialmaxtime = 500;
- break;
- case 26:
- tutorialmaxtime = 2;
- break;
- case 27:
- tutorialmaxtime = 4;
- reversaltrain = 1;
- cananger = 1;
- Person::players[1]->aitype = attacktypecutoff;
- break;
- case 28:
- tutorialmaxtime = 400;
- break;
- case 29:
- tutorialmaxtime = 400;
- Person::players[0]->escapednum = 0;
- break;
- case 30:
- tutorialmaxtime = 4;
- reversaltrain = 0;
- cananger = 0;
- Person::players[1]->aitype = passivetype;
- break;
- case 31:
- tutorialmaxtime = 13;
- break;
- case 32:
- tutorialmaxtime = 8;
- break;
- case 33:
- tutorialmaxtime = 400;
- cananger = 1;
- canattack = 1;
- Person::players[1]->aitype = attacktypecutoff;
- break;
- case 34:
- tutorialmaxtime = 400;
- break;
- case 35:
- tutorialmaxtime = 400;
- break;
- case 36:
- tutorialmaxtime = 2;
- reversaltrain = 0;
- cananger = 0;
- Person::players[1]->aitype = passivetype;
- break;
- case 37:
- damagedealt = 0;
- damagetaken = 0;
- tutorialmaxtime = 50;
- cananger = 1;
- canattack = 1;
- Person::players[1]->aitype = attacktypecutoff;
- break;
- case 38:
- tutorialmaxtime = 4;
- canattack = 0;
- cananger = 0;
- Person::players[1]->aitype = passivetype;
- break;
- case 39: {
- XYZ temp, temp2;
-
- temp.x = 1011;
- temp.y = 84;
- temp.z = 491;
- temp2.x = 1025;
- temp2.y = 75;
- temp2.z = 447;
-
- Weapon w(knife, -1);
- w.position = (temp + temp2) / 2;
- w.tippoint = (temp + temp2) / 2;
-
- w.velocity = 0.1;
- w.tipvelocity = 0.1;
- w.missed = 1;
- w.hitsomething = 0;
- w.freetime = 0;
- w.firstfree = 1;
- w.physics = 1;
-
- weapons.push_back(w);
- }
- break;
- case 40:
- tutorialmaxtime = 300;
- break;
- case 41:
- tutorialmaxtime = 300;
- break;
- case 42:
- tutorialmaxtime = 8;
- break;
- case 43:
- tutorialmaxtime = 300;
- break;
- case 44:
- weapons[0].owner = 1;
- Person::players[0]->weaponactive = -1;
- Person::players[0]->num_weapons = 0;
- Person::players[1]->weaponactive = 0;
- Person::players[1]->num_weapons = 1;
- Person::players[1]->weaponids[0] = 0;
-
- cananger = 1;
- canattack = 1;
- Person::players[1]->aitype = attacktypecutoff;
-
- tutorialmaxtime = 300;
- break;
- case 45:
- weapons[0].owner = 1;
- Person::players[0]->weaponactive = -1;
- Person::players[0]->num_weapons = 0;
- Person::players[1]->weaponactive = 0;
- Person::players[1]->num_weapons = 1;
- Person::players[1]->weaponids[0] = 0;
-
- tutorialmaxtime = 300;
- break;
- case 46:
- weapons[0].owner = 1;
- Person::players[0]->weaponactive = -1;
- Person::players[0]->num_weapons = 0;
- Person::players[1]->weaponactive = 0;
- Person::players[1]->num_weapons = 1;
- Person::players[1]->weaponids[0] = 0;
-
- weapons[0].setType(sword);
-
- tutorialmaxtime = 300;
- break;
- case 47: {
- tutorialmaxtime = 10;
-
- XYZ temp, temp2;
-
- temp.x = 1011;
- temp.y = 84;
- temp.z = 491;
- temp2.x = 1025;
- temp2.y = 75;
- temp2.z = 447;
-
- Weapon w(sword, -1);
- w.position = (temp + temp2) / 2;
- w.tippoint = (temp + temp2) / 2;
-
- w.velocity = 0.1;
- w.tipvelocity = 0.1;
- w.missed = 1;
- w.hitsomething = 0;
- w.freetime = 0;
- w.firstfree = 1;
- w.physics = 1;
-
- weapons.push_back(w);
-
- weapons[0].owner = 1;
- weapons[1].owner = 0;
- Person::players[0]->weaponactive = 0;
- Person::players[0]->num_weapons = 1;
- Person::players[0]->weaponids[0] = 1;
- Person::players[1]->weaponactive = 0;
- Person::players[1]->num_weapons = 1;
- Person::players[1]->weaponids[0] = 0;
-
- }
- break;
- case 48:
- canattack = 0;
- cananger = 0;
- Person::players[1]->aitype = passivetype;
-
- tutorialmaxtime = 15;
-
- weapons[0].owner = 1;
- weapons[1].owner = 0;
- Person::players[0]->weaponactive = 0;
- Person::players[0]->num_weapons = 1;
- Person::players[0]->weaponids[0] = 1;
- Person::players[1]->weaponactive = 0;
- Person::players[1]->num_weapons = 1;
- Person::players[1]->weaponids[0] = 0;
-
- if (Person::players[0]->weaponactive != -1)
- weapons[Person::players[0]->weaponids[Person::players[0]->weaponactive]].setType(staff);
- else
- weapons[0].setType(staff);
- break;
- case 49:
- canattack = 0;
- cananger = 0;
- Person::players[1]->aitype = passivetype;
-
- tutorialmaxtime = 200;
-
- weapons[1].position = 1000;
- weapons[1].tippoint = 1000;
-
- weapons[0].setType(knife);
-
- weapons[0].owner = 0;
- Person::players[1]->weaponactive = -1;
- Person::players[1]->num_weapons = 0;
- Person::players[0]->weaponactive = 0;
- Person::players[0]->num_weapons = 1;
- Person::players[0]->weaponids[0] = 0;
-
- break;
- case 50: {
- tutorialmaxtime = 8;
-
- XYZ temp, temp2;
- emit_sound_at(fireendsound, Person::players[1]->coords);
-
- for (int i = 0; i < Person::players[1]->skeleton.num_joints; i++) {
- if (Random() % 2 == 0) {
- if (!Person::players[1]->skeleton.free)
- temp2 = (Person::players[1]->coords - Person::players[1]->oldcoords) / multiplier / 2; //velocity/2;
- if (Person::players[1]->skeleton.free)
- temp2 = Person::players[1]->skeleton.joints[i].velocity * Person::players[1]->scale / 2;
- if (!Person::players[1]->skeleton.free)
- temp = DoRotation(DoRotation(DoRotation(Person::players[1]->skeleton.joints[i].position, 0, 0, Person::players[1]->tilt), Person::players[1]->tilt2, 0, 0), 0, Person::players[1]->yaw, 0) * Person::players[1]->scale + Person::players[1]->coords;
- if (Person::players[1]->skeleton.free)
- temp = Person::players[1]->skeleton.joints[i].position * Person::players[1]->scale + Person::players[1]->coords;
- Sprite::MakeSprite(breathsprite, temp, temp2, 1, 1, 1, .6 + (float)abs(Random() % 100) / 200 - .25, 1);
- }
- }
-
- Person::players[1]->num_weapons = 0;
- Person::players[1]->weaponstuck = -1;
- Person::players[1]->weaponactive = -1;
-
- weapons.clear();
- }
- break;
- case 51:
- tutorialmaxtime = 80000;
- break;
- default:
- break;
- }
- if (tutorialstage <= 51)
- tutorialstagetime = 0;
- }
-
- //Tutorial success
- if (tutorialstagetime < tutorialmaxtime - 3) {
- switch (tutorialstage) {
- case 3:
- if (deltah || deltav)
- tutorialsuccess += multiplier;
- break;
- case 4:
- if (Person::players[0]->forwardkeydown || Person::players[0]->backkeydown || Person::players[0]->leftkeydown || Person::players[0]->rightkeydown)
- tutorialsuccess += multiplier;
- break;
- case 5:
- if (Person::players[0]->jumpkeydown)
- tutorialsuccess = 1;
- break;
- case 6:
- if (Person::players[0]->isCrouch())
- tutorialsuccess = 1;
- break;
- case 7:
- if (Person::players[0]->animTarget == rollanim)
- tutorialsuccess = 1;
- break;
- case 8:
- if (Person::players[0]->animTarget == sneakanim)
- tutorialsuccess += multiplier;
- break;
- case 9:
- if (Person::players[0]->animTarget == rabbitrunninganim || Person::players[0]->animTarget == wolfrunninganim)
- tutorialsuccess += multiplier;
- break;
- case 11:
- if (Person::players[0]->isWallJump())
- tutorialsuccess = 1;
- break;
- case 12:
- if (Person::players[0]->animTarget == flipanim)
- tutorialsuccess = 1;
- break;
- case 15:
- if (Person::players[0]->animTarget == upunchanim || Person::players[0]->animTarget == winduppunchanim)
- tutorialsuccess = 1;
- break;
- case 16:
- if (Person::players[0]->animTarget == winduppunchanim)
- tutorialsuccess = 1;
- break;
- case 17:
- if (Person::players[0]->animTarget == spinkickanim)
- tutorialsuccess = 1;
- break;
- case 18:
- if (Person::players[0]->animTarget == sweepanim)
- tutorialsuccess = 1;
- break;
- case 19:
- if (Person::players[0]->animTarget == dropkickanim)
- tutorialsuccess = 1;
- break;
- case 20:
- if (Person::players[0]->animTarget == rabbitkickanim)
- tutorialsuccess = 1;
- break;
- case 21:
- if (bonus == cannon)
- tutorialsuccess = 1;
- break;
- case 22:
- if (bonus == spinecrusher)
- tutorialsuccess = 1;
- break;
- case 23:
- if (Person::players[0]->animTarget == walljumprightkickanim || Person::players[0]->animTarget == walljumpleftkickanim)
- tutorialsuccess = 1;
- break;
- case 24:
- if (Person::players[0]->animTarget == rabbittacklinganim)
- tutorialsuccess = 1;
- break;
- case 25:
- if (Person::players[0]->animTarget == backhandspringanim)
- tutorialsuccess = 1;
- break;
- case 28:
- if (animation[Person::players[0]->animTarget].attack == reversed && Person::players[0]->feint)
- tutorialsuccess = 1;
- break;
- case 29:
- if (Person::players[0]->escapednum == 2) {
- tutorialsuccess = 1;
- reversaltrain = 0;
- cananger = 0;
- Person::players[1]->aitype = passivetype;
- }
- break;
- case 33:
- if (animation[Person::players[0]->animTarget].attack == reversal)
- tutorialsuccess = 1;
- break;
- case 34:
- if (animation[Person::players[0]->animTarget].attack == reversal)
- tutorialsuccess = 1;
- break;
- case 35:
- if (animation[Person::players[0]->animTarget].attack == reversal) {
- tutorialsuccess = 1;
- reversaltrain = 0;
- cananger = 0;
- Person::players[1]->aitype = passivetype;
- }
- break;
- case 40:
- if (Person::players[0]->num_weapons > 0)
- tutorialsuccess = 1;
- break;
- case 41:
- if (Person::players[0]->weaponactive == -1 && Person::players[0]->num_weapons > 0)
- tutorialsuccess = 1;
- break;
- case 43:
- if (Person::players[0]->animTarget == knifeslashstartanim)
- tutorialsuccess = 1;
- break;
- case 44:
- if (animation[Person::players[0]->animTarget].attack == reversal)
- tutorialsuccess = 1;
- break;
- case 45:
- if (animation[Person::players[0]->animTarget].attack == reversal)
- tutorialsuccess = 1;
- break;
- case 46:
- if (animation[Person::players[0]->animTarget].attack == reversal)
- tutorialsuccess = 1;
- break;
- case 49:
- if (Person::players[1]->weaponstuck != -1)
- tutorialsuccess = 1;
- break;
- default:
- break;
- }
- if (tutorialsuccess >= 1)
- tutorialstagetime = tutorialmaxtime - 3;
-
-
- if (tutorialstagetime == tutorialmaxtime - 3) {
- emit_sound_np(consolesuccesssound);
- }
-
- if (tutorialsuccess >= 1) {
- if (tutorialstage == 34 || tutorialstage == 35)
- tutorialstagetime = tutorialmaxtime - 1;
- }
- }
-
- if (tutorialstage < 14 || tutorialstage >= 50) {
- Person::players[1]->coords.y = 300;
- Person::players[1]->velocity = 0;
- }
-}
-
-void doDebugKeys()
-{
- float headprop, bodyprop, armprop, legprop;
- if (debugmode) {
- if (Input::isKeyPressed(SDLK_h)) {
- Person::players[0]->damagetolerance = 200000;
- Person::players[0]->damage = 0;
- Person::players[0]->burnt = 0;
- Person::players[0]->permanentdamage = 0;
- Person::players[0]->superpermanentdamage = 0;
- }
-
- if (Input::isKeyPressed(SDLK_j)) {
- environment++;
- if (environment > 2)
- environment = 0;
- Setenvironment(environment);
- }
-
- if (Input::isKeyPressed(SDLK_c)) {
- cameramode = 1 - cameramode;
- }
-
- if (Input::isKeyPressed(SDLK_x) && !Input::isKeyDown(SDLK_LSHIFT)) {
- if (Person::players[0]->num_weapons > 0) {
- if (weapons[Person::players[0]->weaponids[0]].getType() == sword)
- weapons[Person::players[0]->weaponids[0]].setType(staff);
- else if (weapons[Person::players[0]->weaponids[0]].getType() == staff)
- weapons[Person::players[0]->weaponids[0]].setType(knife);
- else
- weapons[Person::players[0]->weaponids[0]].setType(sword);
- }
- }
-
- if (Input::isKeyPressed(SDLK_x) && Input::isKeyDown(SDLK_LSHIFT)) {
- int closest = findClosestPlayer();
- if (closest >= 0) {
- if (Person::players[closest]->num_weapons) {
- if (weapons[Person::players[closest]->weaponids[0]].getType() == sword)
- weapons[Person::players[closest]->weaponids[0]].setType(staff);
- else if (weapons[Person::players[closest]->weaponids[0]].getType() == staff)
- weapons[Person::players[closest]->weaponids[0]].setType(knife);
- else
- weapons[Person::players[closest]->weaponids[0]].setType(sword);
- }
- if (!Person::players[closest]->num_weapons) {
- Person::players[closest]->weaponids[0] = weapons.size();
-
- weapons.push_back(Weapon(knife, closest));
-
- Person::players[closest]->num_weapons = 1;
- }
- }
- }
-
- if (Input::isKeyDown(SDLK_u)) {
- int closest = findClosestPlayer();
- if (closest >= 0) {
- Person::players[closest]->yaw += multiplier * 50;
- Person::players[closest]->targetyaw = Person::players[closest]->yaw;
- }
- }
-
-
- if (Input::isKeyPressed(SDLK_o) && !Input::isKeyDown(SDLK_LSHIFT)) {
- int closest = findClosestPlayer();
- if (Input::isKeyDown(SDLK_LCTRL))
- closest = 0;
-
- if (closest >= 0) {
- Person::players[closest]->whichskin++;
- if (Person::players[closest]->whichskin > 9)
- Person::players[closest]->whichskin = 0;
- if (Person::players[closest]->whichskin > 2 && Person::players[closest]->creature == wolftype)
- Person::players[closest]->whichskin = 0;
-
- Person::players[closest]->skeleton.drawmodel.textureptr.load(creatureskin[Person::players[closest]->creature][Person::players[closest]->whichskin], 1,
- &Person::players[closest]->skeleton.skinText[0], &Person::players[closest]->skeleton.skinsize);
- }
-
- if (Person::players[closest]->numclothes) {
- for (int i = 0; i < Person::players[closest]->numclothes; i++) {
- tintr = Person::players[closest]->clothestintr[i];
- tintg = Person::players[closest]->clothestintg[i];
- tintb = Person::players[closest]->clothestintb[i];
- AddClothes((char *)Person::players[closest]->clothes[i], &Person::players[closest]->skeleton.skinText[0]);
- }
- Person::players[closest]->DoMipmaps();
- }
- }
-
- if (Input::isKeyPressed(SDLK_o) && Input::isKeyDown(SDLK_LSHIFT)) {
- int closest = findClosestPlayer();
- if (closest >= 0) {
- if (Person::players[closest]->creature == wolftype) {
- headprop = Person::players[closest]->proportionhead.x / 1.1;
- bodyprop = Person::players[closest]->proportionbody.x / 1.1;
- armprop = Person::players[closest]->proportionarms.x / 1.1;
- legprop = Person::players[closest]->proportionlegs.x / 1.1;
- }
-
- if (Person::players[closest]->creature == rabbittype) {
- headprop = Person::players[closest]->proportionhead.x / 1.2;
- bodyprop = Person::players[closest]->proportionbody.x / 1.05;
- armprop = Person::players[closest]->proportionarms.x / 1.00;
- legprop = Person::players[closest]->proportionlegs.x / 1.1;
- }
-
-
- if (Person::players[closest]->creature == rabbittype) {
- Person::players[closest]->skeleton.id = closest;
- Person::players[closest]->skeleton.Load((char *)":Data:Skeleton:Basic Figure Wolf", (char *)":Data:Skeleton:Basic Figure Wolf Low", (char *)":Data:Skeleton:Rabbitbelt", (char *)":Data:Models:Wolf.solid", (char *)":Data:Models:Wolf2.solid", (char *)":Data:Models:Wolf3.solid", (char *)":Data:Models:Wolf4.solid", (char *)":Data:Models:Wolf5.solid", (char *)":Data:Models:Wolf6.solid", (char *)":Data:Models:Wolf7.solid", (char *)":Data:Models:Wolflow.solid", (char *)":Data:Models:Belt.solid", 0);
- Person::players[closest]->skeleton.drawmodel.textureptr.load(":Data:Textures:Wolf.jpg", 1, &Person::players[closest]->skeleton.skinText[closest], &Person::players[closest]->skeleton.skinsize);
- Person::players[closest]->whichskin = 0;
- Person::players[closest]->creature = wolftype;
-
- Person::players[closest]->proportionhead = 1.1;
- Person::players[closest]->proportionbody = 1.1;
- Person::players[closest]->proportionarms = 1.1;
- Person::players[closest]->proportionlegs = 1.1;
- Person::players[closest]->proportionlegs.y = 1.1;
- Person::players[closest]->scale = .23 * 5 * Person::players[0]->scale;
-
- Person::players[closest]->damagetolerance = 300;
- } else {
- Person::players[closest]->skeleton.id = closest;
- Person::players[closest]->skeleton.Load((char *)":Data:Skeleton:Basic Figure", (char *)":Data:Skeleton:Basic Figurelow", (char *)":Data:Skeleton:Rabbitbelt", (char *)":Data:Models:Body.solid", (char *)":Data:Models:Body2.solid", (char *)":Data:Models:Body3.solid", (char *)":Data:Models:Body4.solid", (char *)":Data:Models:Body5.solid", (char *)":Data:Models:Body6.solid", (char *)":Data:Models:Body7.solid", (char *)":Data:Models:Bodylow.solid", (char *)":Data:Models:Belt.solid", 1);
- Person::players[closest]->skeleton.drawmodel.textureptr.load(":Data:Textures:Fur3.jpg", 1, &Person::players[closest]->skeleton.skinText[0], &Person::players[closest]->skeleton.skinsize);
- Person::players[closest]->whichskin = 0;
- Person::players[closest]->creature = rabbittype;
-
- Person::players[closest]->proportionhead = 1.2;
- Person::players[closest]->proportionbody = 1.05;
- Person::players[closest]->proportionarms = 1.00;
- Person::players[closest]->proportionlegs = 1.1;
- Person::players[closest]->proportionlegs.y = 1.05;
- Person::players[closest]->scale = .2 * 5 * Person::players[0]->scale;
-
- Person::players[closest]->damagetolerance = 200;
- }
-
- if (Person::players[closest]->creature == wolftype) {
- Person::players[closest]->proportionhead = 1.1 * headprop;
- Person::players[closest]->proportionbody = 1.1 * bodyprop;
- Person::players[closest]->proportionarms = 1.1 * armprop;
- Person::players[closest]->proportionlegs = 1.1 * legprop;
- }
-
- if (Person::players[closest]->creature == rabbittype) {
- Person::players[closest]->proportionhead = 1.2 * headprop;
- Person::players[closest]->proportionbody = 1.05 * bodyprop;
- Person::players[closest]->proportionarms = 1.00 * armprop;
- Person::players[closest]->proportionlegs = 1.1 * legprop;
- Person::players[closest]->proportionlegs.y = 1.05 * legprop;
- }
-
- }
- }
-
- if (Input::isKeyPressed(SDLK_b) && !Input::isKeyDown(SDLK_LSHIFT)) {
- slomo = 1 - slomo;
- slomodelay = 1000;
- }
-
-
- if (((Input::isKeyPressed(SDLK_i) && !Input::isKeyDown(SDLK_LSHIFT)))) {
- int closest = -1;
- float closestdist = std::numeric_limits<float>::max();
-
- for (int i = 1; i < numplayers; i++) {
- float distance = distsq(&Person::players[i]->coords, &Person::players[0]->coords);
- if (!Person::players[i]->headless)
- if (distance < closestdist) {
- closestdist = distance;
- closest = i;
- }
- }
-
- XYZ flatfacing2, flatvelocity2;
- XYZ blah;
- if (closest != -1 && distsq(&Person::players[closest]->coords, &Person::players[0]->coords) < 144) {
- blah = Person::players[closest]->coords;
- XYZ headspurtdirection;
- //int i = Person::players[closest]->skeleton.jointlabels[head];
- Joint& headjoint = Person::players[closest]->joint(head);
- for (int k = 0; k < Person::players[closest]->skeleton.num_joints; k++) {
- if (!Person::players[closest]->skeleton.free)
- flatvelocity2 = Person::players[closest]->velocity;
- if (Person::players[closest]->skeleton.free)
- flatvelocity2 = headjoint.velocity;
- if (!Person::players[closest]->skeleton.free)
- flatfacing2 = DoRotation(DoRotation(DoRotation(headjoint.position, 0, 0, Person::players[closest]->tilt), Person::players[closest]->tilt2, 0, 0), 0, Person::players[closest]->yaw, 0) * Person::players[closest]->scale + Person::players[closest]->coords;
- if (Person::players[closest]->skeleton.free)
- flatfacing2 = headjoint.position * Person::players[closest]->scale + Person::players[closest]->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;
- headspurtdirection = headjoint.position - Person::players[closest]->jointPos(neck);
- Normalise(&headspurtdirection);
- Sprite::MakeSprite(bloodflamesprite, flatfacing2, flatvelocity2, 1, 1, 1, .6, 1);
- flatvelocity2 += headspurtdirection * 8;
- Sprite::MakeSprite(bloodsprite, flatfacing2, flatvelocity2 / 2, 1, 1, 1, .16, 1);
- }
- Sprite::MakeSprite(cloudsprite, flatfacing2, flatvelocity2 * 0, .6, 0, 0, 1, .5);
-
- emit_sound_at(splattersound, blah);
- emit_sound_at(breaksound2, blah, 100.);
-
- if (Person::players[closest]->skeleton.free == 2)
- Person::players[closest]->skeleton.free = 0;
- Person::players[closest]->RagDoll(0);
- Person::players[closest]->dead = 2;
- Person::players[closest]->headless = 1;
- Person::players[closest]->DoBloodBig(3, 165);
-
- camerashake += .3;
- }
- }
-
- if (((Input::isKeyPressed(SDLK_i) && Input::isKeyDown(SDLK_LSHIFT)))) {
- int closest = findClosestPlayer();
- XYZ flatfacing2, flatvelocity2;
- XYZ blah;
- if (closest >= 0 && distsq(&Person::players[closest]->coords, &Person::players[0]->coords) < 144) {
- blah = Person::players[closest]->coords;
- emit_sound_at(splattersound, blah);
- emit_sound_at(breaksound2, blah);
-
- for (int i = 0; i < Person::players[closest]->skeleton.num_joints; i++) {
- if (!Person::players[closest]->skeleton.free)
- flatvelocity2 = Person::players[closest]->velocity;
- if (Person::players[closest]->skeleton.free)
- flatvelocity2 = Person::players[closest]->skeleton.joints[i].velocity;
- if (!Person::players[closest]->skeleton.free)
- flatfacing2 = DoRotation(DoRotation(DoRotation(Person::players[closest]->skeleton.joints[i].position, 0, 0, Person::players[closest]->tilt), Person::players[closest]->tilt2, 0, 0), 0, Person::players[closest]->yaw, 0) * Person::players[closest]->scale + Person::players[closest]->coords;
- if (Person::players[closest]->skeleton.free)
- flatfacing2 = Person::players[closest]->skeleton.joints[i].position * Person::players[closest]->scale + Person::players[closest]->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;
- Sprite::MakeSprite(bloodflamesprite, flatfacing2, flatvelocity2, 1, 1, 1, 3, 1);
- Sprite::MakeSprite(bloodsprite, flatfacing2, flatvelocity2, 1, 1, 1, .3, 1);
- Sprite::MakeSprite(cloudsprite, flatfacing2, flatvelocity2 * 0, .6, 0, 0, 1, .5);
- }
-
- for (int i = 0; i < Person::players[closest]->skeleton.num_joints; i++) {
- if (!Person::players[closest]->skeleton.free)
- flatvelocity2 = Person::players[closest]->velocity;
- if (Person::players[closest]->skeleton.free)
- flatvelocity2 = Person::players[closest]->skeleton.joints[i].velocity;
- if (!Person::players[closest]->skeleton.free)
- flatfacing2 = DoRotation(DoRotation(DoRotation(Person::players[closest]->skeleton.joints[i].position, 0, 0, Person::players[closest]->tilt), Person::players[closest]->tilt2, 0, 0), 0, Person::players[closest]->yaw, 0) * Person::players[closest]->scale + Person::players[closest]->coords;
- if (Person::players[closest]->skeleton.free)
- flatfacing2 = Person::players[closest]->skeleton.joints[i].position * Person::players[closest]->scale + Person::players[closest]->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;
- Sprite::MakeSprite(bloodflamesprite, flatfacing2, flatvelocity2, 1, 1, 1, 3, 1);
- Sprite::MakeSprite(bloodsprite, flatfacing2, flatvelocity2, 1, 1, 1, .4, 1);
- }
-
- for (int i = 0; i < Person::players[closest]->skeleton.num_joints; i++) {
- if (!Person::players[closest]->skeleton.free)
- flatvelocity2 = Person::players[closest]->velocity;
- if (Person::players[closest]->skeleton.free)
- flatvelocity2 = Person::players[closest]->skeleton.joints[i].velocity;
- if (!Person::players[closest]->skeleton.free)
- flatfacing2 = DoRotation(DoRotation(DoRotation(Person::players[closest]->skeleton.joints[i].position, 0, 0, Person::players[closest]->tilt), Person::players[closest]->tilt2, 0, 0), 0, Person::players[closest]->yaw, 0) * Person::players[closest]->scale + Person::players[closest]->coords;
- if (Person::players[closest]->skeleton.free)
- flatfacing2 = Person::players[closest]->skeleton.joints[i].position * Person::players[closest]->scale + Person::players[closest]->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;
- Sprite::MakeSprite(bloodflamesprite, flatfacing2, flatvelocity2 * 2, 1, 1, 1, 3, 1);
- Sprite::MakeSprite(bloodsprite, flatfacing2, flatvelocity2 * 2, 1, 1, 1, .4, 1);
- }
-
- for (int i = 0; i < Person::players[closest]->skeleton.num_joints; i++) {
- if (!Person::players[closest]->skeleton.free)
- flatvelocity2 = Person::players[closest]->velocity;
- if (Person::players[closest]->skeleton.free)
- flatvelocity2 = Person::players[closest]->skeleton.joints[i].velocity;
- if (!Person::players[closest]->skeleton.free)
- flatfacing2 = DoRotation(DoRotation(DoRotation(Person::players[closest]->skeleton.joints[i].position, 0, 0, Person::players[closest]->tilt), Person::players[closest]->tilt2, 0, 0), 0, Person::players[closest]->yaw, 0) * Person::players[closest]->scale + Person::players[closest]->coords;
- if (Person::players[closest]->skeleton.free)
- flatfacing2 = Person::players[closest]->skeleton.joints[i].position * Person::players[closest]->scale + Person::players[closest]->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;
- Sprite::MakeSprite(bloodflamesprite, flatfacing2, flatvelocity2 * 2, 1, 1, 1, 3, 1);
- Sprite::MakeSprite(bloodsprite, flatfacing2, flatvelocity2 * 2, 1, 1, 1, .4, 1);
- }
-
- XYZ temppos;
- for (int j = 0; j < numplayers; j++) {
- if (j != closest) {
- if (distsq(&Person::players[j]->coords, &Person::players[closest]->coords) < 25) {
- Person::players[j]->DoDamage((25 - distsq(&Person::players[j]->coords, &Person::players[closest]->coords)) * 60);
- if (Person::players[j]->skeleton.free == 2)
- Person::players[j]->skeleton.free = 1;
- Person::players[j]->skeleton.longdead = 0;
- Person::players[j]->RagDoll(0);
- for (int i = 0; i < Person::players[j]->skeleton.num_joints; i++) {
- temppos = Person::players[j]->skeleton.joints[i].position + Person::players[j]->coords;
- if (distsq(&temppos, &Person::players[closest]->coords) < 25) {
- flatvelocity2 = temppos - Person::players[closest]->coords;
- Normalise(&flatvelocity2);
- Person::players[j]->skeleton.joints[i].velocity += flatvelocity2 * ((20 - distsq(&temppos, &Person::players[closest]->coords)) * 20);
- }
- }
- }
- }
- }
-
- Person::players[closest]->DoDamage(10000);
- Person::players[closest]->RagDoll(0);
- Person::players[closest]->dead = 2;
- Person::players[closest]->coords = 20;
- Person::players[closest]->skeleton.free = 2;
-
- camerashake += .6;
-
- }
- }
-
- if (Input::isKeyPressed(SDLK_f)) {
- Person::players[0]->onfire = 1 - Person::players[0]->onfire;
- if (Person::players[0]->onfire) {
- Person::players[0]->CatchFire();
- }
- if (!Person::players[0]->onfire) {
- emit_sound_at(fireendsound, Person::players[0]->coords);
- pause_sound(stream_firesound);
- }
- }
-
- if (Input::isKeyPressed(SDLK_n) && !Input::isKeyDown(SDLK_LCTRL)) {
- //if(!Person::players[0]->skeleton.free)Person::players[0]->damage+=500;
- Person::players[0]->RagDoll(0);
- //Person::players[0]->spurt=1;
- //Person::players[0]->DoDamage(1000);
-
- emit_sound_at(whooshsound, Person::players[0]->coords, 128.);
- }
-
- if (Input::isKeyPressed(SDLK_n) && Input::isKeyDown(SDLK_LCTRL)) {
- for (int i = 0; i < objects.numobjects; i++) {
- if (objects.type[i] == treeleavestype) {
- objects.scale[i] *= .9;
- }
- }
- }
-
- if (Input::isKeyPressed(SDLK_m) && Input::isKeyDown(SDLK_LSHIFT)) {
- editorenabled = 1 - editorenabled;
- if (editorenabled) {
- Person::players[0]->damagetolerance = 100000;
- } else {
- Person::players[0]->damagetolerance = 200;
- }
- Person::players[0]->damage = 0; // these lines were in both if and else, but I think they would better fit in the if
- Person::players[0]->permanentdamage = 0;
- Person::players[0]->superpermanentdamage = 0;
- Person::players[0]->bloodloss = 0;
- Person::players[0]->deathbleeding = 0;
- }
-
- //skip level
- if (whichlevel != -2 && Input::isKeyPressed(SDLK_k) && Input::isKeyDown(SDLK_LSHIFT) && !editorenabled) {
- targetlevel++;
- if (targetlevel > numchallengelevels - 1)
- targetlevel = 0;
- loading = 1;
- leveltime = 5;
- }
-
- if (editorenabled) {
- if (Input::isKeyPressed(SDLK_DELETE) && Input::isKeyDown(SDLK_LSHIFT)) {
- int closest = findClosestPlayer();
- if (closest >= 0) {
- //player[closest]=player[numplayers-1];
- //Person::players[closest]->skeleton=Person::players[numplayers-1]->skeleton;
- numplayers--;
- }
- }
-
- if (Input::isKeyPressed(SDLK_DELETE) && Input::isKeyDown(SDLK_LCTRL)) {
- int closest = findClosestObject();
- if (closest >= 0)
- objects.position[closest].y -= 500;
- }
-
- if (Input::isKeyPressed(SDLK_m) && Input::isKeyDown(SDLK_LSHIFT)) {
- //drawmode++;
- //if(drawmode>2)drawmode=0;
- if (objects.numobjects < max_objects - 1) {
- XYZ boxcoords;
- boxcoords.x = Person::players[0]->coords.x;
- boxcoords.z = Person::players[0]->coords.z;
- boxcoords.y = Person::players[0]->coords.y - 3;
- if (editortype == bushtype)
- boxcoords.y = Person::players[0]->coords.y - .5;
- if (editortype == firetype)
- boxcoords.y = Person::players[0]->coords.y - .5;
- //objects.MakeObject(abs(Random()%3),boxcoords,Random()%360);
- float temprotat, temprotat2;
- temprotat = editoryaw;
- temprotat2 = editorpitch;
- if (temprotat < 0 || editortype == bushtype)
- temprotat = Random() % 360;
- if (temprotat2 < 0)
- temprotat2 = Random() % 360;
-
- objects.MakeObject(editortype, boxcoords, (int)temprotat - ((int)temprotat) % 30, (int)temprotat2, editorsize);
- if (editortype == treetrunktype)
- objects.MakeObject(treeleavestype, boxcoords, Random() % 360 * (temprotat2 < 2) + (int)editoryaw - ((int)editoryaw) % 30, editorpitch, editorsize);
- }
- }
-
- if (Input::isKeyPressed(SDLK_p) && Input::isKeyDown(SDLK_LSHIFT) && !Input::isKeyDown(SDLK_LCTRL)) {
- if (numplayers < maxplayers - 1) {
- Person::players[numplayers]->scale = .2 * 5 * Person::players[0]->scale;
- Person::players[numplayers]->creature = rabbittype;
- Person::players[numplayers]->howactive = editoractive;
- Person::players[numplayers]->skeleton.id = numplayers;
- Person::players[numplayers]->skeleton.Load((char *)":Data:Skeleton:Basic Figure", (char *)":Data:Skeleton:Basic Figurelow", (char *)":Data:Skeleton:Rabbitbelt", (char *)":Data:Models:Body.solid", (char *)":Data:Models:Body2.solid", (char *)":Data:Models:Body3.solid", (char *)":Data:Models:Body4.solid", (char *)":Data:Models:Body5.solid", (char *)":Data:Models:Body6.solid", (char *)":Data:Models:Body7.solid", (char *)":Data:Models:Bodylow.solid", (char *)":Data:Models:Belt.solid", 1);
-
- //texsize=512*512*3/texdetail/texdetail;
- //if(!Person::players[numplayers]->loaded)Person::players[numplayers]->skeleton.skinText = new GLubyte[texsize];
- //Person::players[numplayers]->skeleton.skinText.resize(texsize);
-
- int k = abs(Random() % 2) + 1;
- if (k == 0) {
- Person::players[numplayers]->skeleton.drawmodel.textureptr.load(":Data:Textures:Fur3.jpg", 1, &Person::players[numplayers]->skeleton.skinText[0], &Person::players[numplayers]->skeleton.skinsize);
- Person::players[numplayers]->whichskin = 0;
- } else if (k == 1) {
- Person::players[numplayers]->skeleton.drawmodel.textureptr.load(":Data:Textures:Fur.jpg", 1, &Person::players[numplayers]->skeleton.skinText[0], &Person::players[numplayers]->skeleton.skinsize);
- Person::players[numplayers]->whichskin = 1;
- } else {
- Person::players[numplayers]->skeleton.drawmodel.textureptr.load(":Data:Textures:Fur2.jpg", 1, &Person::players[numplayers]->skeleton.skinText[0], &Person::players[numplayers]->skeleton.skinsize);
- Person::players[numplayers]->whichskin = 2;
- }
-
- Person::players[numplayers]->skeleton.drawmodelclothes.textureptr.load(":Data:Textures:Belt.png", 1, 1);
- Person::players[numplayers]->power = 1;
- Person::players[numplayers]->speedmult = 1;
- Person::players[numplayers]->animCurrent = bounceidleanim;
- Person::players[numplayers]->animTarget = bounceidleanim;
- Person::players[numplayers]->frameCurrent = 0;
- Person::players[numplayers]->frameTarget = 1;
- Person::players[numplayers]->target = 0;
- Person::players[numplayers]->bled = 0;
- Person::players[numplayers]->speed = 1 + (float)(Random() % 100) / 1000;
-
- Person::players[numplayers]->targetyaw = Person::players[0]->targetyaw;
- Person::players[numplayers]->yaw = Person::players[0]->yaw;
-
- Person::players[numplayers]->velocity = 0;
- Person::players[numplayers]->coords = Person::players[0]->coords;
- Person::players[numplayers]->oldcoords = Person::players[numplayers]->coords;
- Person::players[numplayers]->realoldcoords = Person::players[numplayers]->coords;
-
- Person::players[numplayers]->id = numplayers;
- Person::players[numplayers]->skeleton.id = numplayers;
- Person::players[numplayers]->updatedelay = 0;
- Person::players[numplayers]->normalsupdatedelay = 0;
-
- Person::players[numplayers]->aitype = passivetype;
-
- if (Person::players[0]->creature == wolftype) {
- headprop = Person::players[0]->proportionhead.x / 1.1;
- bodyprop = Person::players[0]->proportionbody.x / 1.1;
- armprop = Person::players[0]->proportionarms.x / 1.1;
- legprop = Person::players[0]->proportionlegs.x / 1.1;
- }
-
- if (Person::players[0]->creature == rabbittype) {
- headprop = Person::players[0]->proportionhead.x / 1.2;
- bodyprop = Person::players[0]->proportionbody.x / 1.05;
- armprop = Person::players[0]->proportionarms.x / 1.00;
- legprop = Person::players[0]->proportionlegs.x / 1.1;
- }
-
- if (Person::players[numplayers]->creature == wolftype) {
- Person::players[numplayers]->proportionhead = 1.1 * headprop;
- Person::players[numplayers]->proportionbody = 1.1 * bodyprop;
- Person::players[numplayers]->proportionarms = 1.1 * armprop;
- Person::players[numplayers]->proportionlegs = 1.1 * legprop;
- }
-
- if (Person::players[numplayers]->creature == rabbittype) {
- Person::players[numplayers]->proportionhead = 1.2 * headprop;
- Person::players[numplayers]->proportionbody = 1.05 * bodyprop;
- Person::players[numplayers]->proportionarms = 1.00 * armprop;
- Person::players[numplayers]->proportionlegs = 1.1 * legprop;
- Person::players[numplayers]->proportionlegs.y = 1.05 * legprop;
- }
-
- Person::players[numplayers]->headless = 0;
- Person::players[numplayers]->onfire = 0;
-
- if (cellophane) {
- Person::players[numplayers]->proportionhead.z = 0;
- Person::players[numplayers]->proportionbody.z = 0;
- Person::players[numplayers]->proportionarms.z = 0;
- Person::players[numplayers]->proportionlegs.z = 0;
- }
-
- Person::players[numplayers]->tempanimation.Load((char *)"Tempanim", 0, 0);
-
- Person::players[numplayers]->damagetolerance = 200;
-
- Person::players[numplayers]->protectionhead = Person::players[0]->protectionhead;
- Person::players[numplayers]->protectionhigh = Person::players[0]->protectionhigh;
- Person::players[numplayers]->protectionlow = Person::players[0]->protectionlow;
- Person::players[numplayers]->armorhead = Person::players[0]->armorhead;
- Person::players[numplayers]->armorhigh = Person::players[0]->armorhigh;
- Person::players[numplayers]->armorlow = Person::players[0]->armorlow;
- Person::players[numplayers]->metalhead = Person::players[0]->metalhead;
- Person::players[numplayers]->metalhigh = Person::players[0]->metalhigh;
- Person::players[numplayers]->metallow = Person::players[0]->metallow;
-
- Person::players[numplayers]->immobile = Person::players[0]->immobile;
-
- Person::players[numplayers]->numclothes = Person::players[0]->numclothes;
- if (Person::players[numplayers]->numclothes)
- for (int i = 0; i < Person::players[numplayers]->numclothes; i++) {
- strcpy(Person::players[numplayers]->clothes[i], Person::players[0]->clothes[i]);
- Person::players[numplayers]->clothestintr[i] = Person::players[0]->clothestintr[i];
- Person::players[numplayers]->clothestintg[i] = Person::players[0]->clothestintg[i];
- Person::players[numplayers]->clothestintb[i] = Person::players[0]->clothestintb[i];
- tintr = Person::players[numplayers]->clothestintr[i];
- tintg = Person::players[numplayers]->clothestintg[i];
- tintb = Person::players[numplayers]->clothestintb[i];
- AddClothes((char *)Person::players[numplayers]->clothes[i], &Person::players[numplayers]->skeleton.skinText[0]);
- }
- if (Person::players[numplayers]->numclothes) {
- Person::players[numplayers]->DoMipmaps();
- }
-
- Person::players[numplayers]->power = Person::players[0]->power;
- Person::players[numplayers]->speedmult = Person::players[0]->speedmult;
-
- Person::players[numplayers]->damage = 0;
- Person::players[numplayers]->permanentdamage = 0;
- Person::players[numplayers]->superpermanentdamage = 0;
- Person::players[numplayers]->deathbleeding = 0;
- Person::players[numplayers]->bleeding = 0;
- Person::players[numplayers]->numwaypoints = 0;
- Person::players[numplayers]->waypoint = 0;
- Person::players[numplayers]->jumppath = 0;
- Person::players[numplayers]->weaponstuck = -1;
- Person::players[numplayers]->weaponactive = -1;
- Person::players[numplayers]->num_weapons = 0;
- Person::players[numplayers]->bloodloss = 0;
- Person::players[numplayers]->dead = 0;
-
- Person::players[numplayers]->loaded = 1;
-
- numplayers++;
- }
- }
-
- if (Input::isKeyPressed(SDLK_p) && Input::isKeyDown(SDLK_LSHIFT)) {
- if (Person::players[numplayers - 1]->numwaypoints < 90) {
- Person::players[numplayers - 1]->waypoints[Person::players[numplayers - 1]->numwaypoints] = Person::players[0]->coords;
- Person::players[numplayers - 1]->waypointtype[Person::players[numplayers - 1]->numwaypoints] = editorpathtype;
- Person::players[numplayers - 1]->numwaypoints++;
- }
- }
-
- if (Input::isKeyPressed(SDLK_p) && Input::isKeyDown(SDLK_LCTRL)) {
- if (numpathpoints < 30) {
- bool connected, alreadyconnected;
- connected = 0;
- if (numpathpoints > 1)
- for (int i = 0; i < numpathpoints; i++) {
- if (distsq(&pathpoint[i], &Person::players[0]->coords) < .5 && i != pathpointselected && !connected) {
- alreadyconnected = 0;
- for (int j = 0; j < numpathpointconnect[pathpointselected]; j++) {
- if (pathpointconnect[pathpointselected][j] == i)
- alreadyconnected = 1;
- }
- if (!alreadyconnected) {
- numpathpointconnect[pathpointselected]++;
- connected = 1;
- pathpointconnect[pathpointselected][numpathpointconnect[pathpointselected] - 1] = i;
- }
- }
- }
- if (!connected) {
- numpathpoints++;
- pathpoint[numpathpoints - 1] = Person::players[0]->coords;
- numpathpointconnect[numpathpoints - 1] = 0;
- if (numpathpoints > 1 && pathpointselected != -1) {
- numpathpointconnect[pathpointselected]++;
- pathpointconnect[pathpointselected][numpathpointconnect[pathpointselected] - 1] = numpathpoints - 1;
- }
- pathpointselected = numpathpoints - 1;
- }
- }
- }
-
- if (Input::isKeyPressed(SDLK_PERIOD)) {
- pathpointselected++;
- if (pathpointselected >= numpathpoints)
- pathpointselected = -1;
- }
- if (Input::isKeyPressed(SDLK_COMMA) && !Input::isKeyDown(SDLK_LSHIFT)) {
- pathpointselected--;
- if (pathpointselected <= -2)
- pathpointselected = numpathpoints - 1;
- }
- if (Input::isKeyPressed(SDLK_COMMA) && Input::isKeyDown(SDLK_LSHIFT)) {
- if (pathpointselected != -1) {
- numpathpoints--;
- pathpoint[pathpointselected] = pathpoint[numpathpoints];
- numpathpointconnect[pathpointselected] = numpathpointconnect[numpathpoints];
- for (int i = 0; i < numpathpointconnect[pathpointselected]; i++) {
- pathpointconnect[pathpointselected][i] = pathpointconnect[numpathpoints][i];
- }
- for (int i = 0; i < numpathpoints; i++) {
- for (int j = 0; j < numpathpointconnect[i]; j++) {
- if (pathpointconnect[i][j] == pathpointselected) {
- pathpointconnect[i][j] = pathpointconnect[i][numpathpointconnect[i] - 1];
- numpathpointconnect[i]--;
- }
- if (pathpointconnect[i][j] == numpathpoints) {
- pathpointconnect[i][j] = pathpointselected;
- }
- }
- }
- pathpointselected = numpathpoints - 1;
- }
- }
-
- if (Input::isKeyPressed(SDLK_LEFT) && Input::isKeyDown(SDLK_LSHIFT) && !Input::isKeyDown(SDLK_LCTRL)) {
- editortype--;
- if (editortype == treeleavestype || editortype == 10)
- editortype--;
- if (editortype < 0)
- editortype = firetype;
- }
-
- if (Input::isKeyPressed(SDLK_RIGHT) && Input::isKeyDown(SDLK_LSHIFT) && !Input::isKeyDown(SDLK_LCTRL)) {
- editortype++;
- if (editortype == treeleavestype || editortype == 10)
- editortype++;
- if (editortype > firetype)
- editortype = 0;
- }
-
- if (Input::isKeyDown(SDLK_LEFT) && !Input::isKeyDown(SDLK_LSHIFT) && !Input::isKeyDown(SDLK_LCTRL)) {
- editoryaw -= multiplier * 100;
- if (editoryaw < -.01)
- editoryaw = -.01;
- }
-
- if (Input::isKeyDown(SDLK_RIGHT) && !Input::isKeyDown(SDLK_LSHIFT) && !Input::isKeyDown(SDLK_LCTRL)) {
- editoryaw += multiplier * 100;
- }
-
- if (Input::isKeyDown(SDLK_UP) && !Input::isKeyDown(SDLK_LCTRL)) {
- editorsize += multiplier;
- }
-
- if (Input::isKeyDown(SDLK_DOWN) && !Input::isKeyDown(SDLK_LCTRL)) {
- editorsize -= multiplier;
- if (editorsize < .1)
- editorsize = .1;
- }
-
-
- if (Input::isKeyPressed(SDLK_LEFT) && Input::isKeyDown(SDLK_LSHIFT) && Input::isKeyDown(SDLK_LCTRL)) {
- mapradius -= multiplier * 10;
- }
-
- if (Input::isKeyPressed(SDLK_RIGHT) && Input::isKeyDown(SDLK_LSHIFT) && Input::isKeyDown(SDLK_LCTRL)) {
- mapradius += multiplier * 10;
- }
- if (Input::isKeyDown(SDLK_UP) && Input::isKeyDown(SDLK_LCTRL)) {
- editorpitch += multiplier * 100;
- }
-
- if (Input::isKeyDown(SDLK_DOWN) && Input::isKeyDown(SDLK_LCTRL)) {
- editorpitch -= multiplier * 100;
- if (editorpitch < -.01)
- editorpitch = -.01;
- }
- if (Input::isKeyPressed(SDLK_DELETE) && objects.numobjects && Input::isKeyDown(SDLK_LSHIFT)) {
- int closest = findClosestObject();
- if (closest >= 0)
- objects.DeleteObject(closest);
- }
- }
- }
-}