-static void ch_sizenear(const char *args)
-{
- int closest = findClosestPlayer();
- if (closest >= 0)
- player[closest].scale = atof(args) * .2;
-}
-
-static void set_proportion(int pnum, const char *args)
-{
- float headprop, bodyprop, armprop, legprop;
-
- sscanf(args, "%f%f%f%f", &headprop, &bodyprop, &armprop, &legprop);
-
- if (player[pnum].creature == wolftype) {
- player[pnum].proportionhead = 1.1 * headprop;
- player[pnum].proportionbody = 1.1 * bodyprop;
- player[pnum].proportionarms = 1.1 * armprop;
- player[pnum].proportionlegs = 1.1 * legprop;
- } else if (player[pnum].creature == rabbittype) {
- player[pnum].proportionhead = 1.2 * headprop;
- player[pnum].proportionbody = 1.05 * bodyprop;
- player[pnum].proportionarms = 1.00 * armprop;
- player[pnum].proportionlegs = 1.1 * legprop;
- player[pnum].proportionlegs.y = 1.05 * legprop;
- }
-}
-
-static void ch_proportion(const char *args)
-{
- set_proportion(0, args);
-}
-
-static void ch_proportionnear(const char *args)
-{
- int closest = findClosestPlayer();
- if (closest >= 0)
- set_proportion(closest, args);
-}
-
-static void set_protection(int pnum, const char *args)
-{
- float head, high, low;
- sscanf(args, "%f%f%f", &head, &high, &low);
-
- player[pnum].protectionhead = head;
- player[pnum].protectionhigh = high;
- player[pnum].protectionlow = low;
-}
-
-static void ch_protection(const char *args)
-{
- set_protection(0, args);
-}
-
-static void ch_protectionnear(const char *args)
-{
- int closest = findClosestPlayer();
- if (closest >= 0)
- set_protection(closest, args);
-}
-
-static void set_armor(int pnum, const char *args)
-{
- float head, high, low;
- sscanf(args, "%f%f%f", &head, &high, &low);
-
- player[pnum].armorhead = head;
- player[pnum].armorhigh = high;
- player[pnum].armorlow = low;
-}
-
-static void ch_armor(const char *args)
-{
- set_armor(0, args);
-}
-
-static void ch_armornear(const char *args)
-{
- int closest = findClosestPlayer();
- if (closest >= 0)
- set_armor(closest, args);
-}
-
-static void ch_protectionreset(const char *args)
-{
- set_protection(0, "1 1 1");
- set_armor(0, "1 1 1");
-}
-
-static void set_metal(int pnum, const char *args)
-{
- float head, high, low;
- sscanf(args, "%f%f%f", &head, &high, &low);
-
- player[pnum].metalhead = head;
- player[pnum].metalhigh = high;
- player[pnum].metallow = low;
-}
-
-static void ch_metal(const char *args)
-{
- set_metal(0, args);
-}
-
-static void set_noclothes(int pnum, const char *args)
-{
- player[pnum].numclothes = 0;
- player[pnum].skeleton.drawmodel.textureptr.load(
- creatureskin[player[pnum].creature][player[pnum].whichskin], 1,
- &player[pnum].skeleton.skinText[0], &player[pnum].skeleton.skinsize);
-}
-
-static void ch_noclothes(const char *args)
-{
- set_noclothes(0, args);
-}
-
-static void ch_noclothesnear(const char *args)
-{
- int closest = findClosestPlayer();
- if (closest >= 0)
- set_noclothes(closest, args);
-}
-
-
-static void set_clothes(int pnum, const char *args)
-{
- char buf[64];
- snprintf(buf, 63, ":Data:Textures:%s.png", args);
-
- if (!AddClothes(buf, &player[pnum].skeleton.skinText[pnum]))
- return;
-
- player[pnum].DoMipmaps();
- strcpy(player[pnum].clothes[player[pnum].numclothes], buf);
- player[pnum].clothestintr[player[pnum].numclothes] = tintr;
- player[pnum].clothestintg[player[pnum].numclothes] = tintg;
- player[pnum].clothestintb[player[pnum].numclothes] = tintb;
- player[pnum].numclothes++;
-}
-
-static void ch_clothes(const char *args)
-{
- set_clothes(0, args);
-}
-
-static void ch_clothesnear(const char *args)
-{
- int closest = findClosestPlayer();
- if (closest >= 0)
- set_clothes(closest, args);
-}
-
-static void ch_belt(const char *args)
-{
- player[0].skeleton.clothes = !player[0].skeleton.clothes;
-}
-
-
-static void ch_cellophane(const char *args)
-{
- cellophane = !cellophane;
- float mul = cellophane ? 0 : 1;
-
- for (int i = 0; i < numplayers; i++) {
- player[i].proportionhead.z = player[i].proportionhead.x * mul;
- player[i].proportionbody.z = player[i].proportionbody.x * mul;
- player[i].proportionarms.z = player[i].proportionarms.x * mul;
- player[i].proportionlegs.z = player[i].proportionlegs.x * mul;
- }
-}
-
-static void ch_funnybunny(const char *args)
-{
- player[0].skeleton.id = 0;
- player[0].skeleton.Load(":Data:Skeleton:Basic Figure", ":Data:Skeleton:Basic Figurelow",
- ":Data:Skeleton:Rabbitbelt", ":Data:Models:Body.solid",
- ":Data:Models:Body2.solid", ":Data:Models:Body3.solid",
- ":Data:Models:Body4.solid", ":Data:Models:Body5.solid",
- ":Data:Models:Body6.solid", ":Data:Models:Body7.solid",
- ":Data:Models:Bodylow.solid", ":Data:Models:Belt.solid", 1);
- player[0].skeleton.drawmodel.textureptr.load(":Data:Textures:fur3.jpg", 1, &player[0].skeleton.skinText[0], &player[0].skeleton.skinsize);
- player[0].creature = rabbittype;
- player[0].scale = .2;
- player[0].headless = 0;
- player[0].damagetolerance = 200;
- set_proportion(0, "1 1 1 1");
-}
-
-static void ch_wolfie(const char *args)
-{
- player[0].skeleton.id = 0;
- player[0].skeleton.Load(":Data:Skeleton:Basic Figure Wolf", ":Data:Skeleton:Basic Figure Wolf Low",
- ":Data:Skeleton:Rabbitbelt", ":Data:Models:Wolf.solid",
- ":Data:Models:Wolf2.solid", ":Data:Models:Wolf3.solid",
- ":Data:Models:Wolf4.solid", ":Data:Models:Wolf5.solid",
- ":Data:Models:Wolf6.solid", ":Data:Models:Wolf7.solid",
- ":Data:Models:Wolflow.solid", ":Data:Models:Belt.solid", 0);
- player[0].skeleton.drawmodel.textureptr.load(":Data:Textures:Wolf.jpg", 1, &player[0].skeleton.skinText[0], &player[0].skeleton.skinsize);
- player[0].creature = wolftype;
- player[0].damagetolerance = 300;
- set_proportion(0, "1 1 1 1");
-}
-
-static void ch_wolfieisgod(const char *args)
-{
- ch_wolfie(args);
-}
-
-static void ch_wolf(const char *args)
-{
- player[0].skeleton.drawmodel.textureptr.load(":Data:Textures:Wolf.jpg", 1, &player[0].skeleton.skinText[0], &player[0].skeleton.skinsize);
-}
-
-static void ch_snowwolf(const char *args)
-{
- player[0].skeleton.drawmodel.textureptr.load(":Data:Textures:SnowWolf.jpg", 1, &player[0].skeleton.skinText[0], &player[0].skeleton.skinsize);
-}
-
-static void ch_darkwolf(const char *args)
-{
- player[0].skeleton.drawmodel.textureptr.load(":Data:Textures:DarkWolf.jpg", 1, &player[0].skeleton.skinText[0], &player[0].skeleton.skinsize);
-}
-
-static void ch_lizardwolf(const char *args)
-{
- player[0].skeleton.drawmodel.textureptr.load(":Data:Textures:Lizardwolf.jpg", 1, &player[0].skeleton.skinText[0], &player[0].skeleton.skinsize);
-}
-
-static void ch_white(const char *args)
-{
- player[0].skeleton.drawmodel.textureptr.load(":Data:Textures:fur.jpg", 1, &player[0].skeleton.skinText[0], &player[0].skeleton.skinsize);
-}
-
-static void ch_brown(const char *args)
-{
- player[0].skeleton.drawmodel.textureptr.load(":Data:Textures:fur3.jpg", 1, &player[0].skeleton.skinText[0], &player[0].skeleton.skinsize);
-}
-
-static void ch_black(const char *args)
-{
- player[0].skeleton.drawmodel.textureptr.load(":Data:Textures:fur2.jpg", 1, &player[0].skeleton.skinText[0], &player[0].skeleton.skinsize);
-}
-
-static void ch_sizemin(const char *args)
-{
- for (int i = 1; i < numplayers; i++)
- if (player[i].scale < 0.8 * 0.2)
- player[i].scale = 0.8 * 0.2;
-}
-
-static void ch_tutorial(const char *args)
-{
- tutoriallevel = atoi(args);
-}
-
-static void ch_hostile(const char *args)
-{
- hostile = atoi(args);
-}
-
-static void ch_indemo(const char *args)
-{
- indemo = 1;
- hotspot[numhotspots] = player[0].coords;
- hotspotsize[numhotspots] = 0;
- hotspottype[numhotspots] = -111;
- strcpy(hotspottext[numhotspots], "mapname");
- numhotspots++;
-}
-
-static void ch_notindemo(const char *args)
-{
- indemo = 0;
- numhotspots--;
-}
-
-static void ch_type(const char *args)
-{
- int n = sizeof(editortypenames) / sizeof(editortypenames[0]);
- for (int i = 0; i < n; i++)
- if (stripfx(args, editortypenames[i])) {
- editoractive = i;
- break;
- }
-}
-
-static void ch_path(const char *args)
-{
- int n = sizeof(pathtypenames) / sizeof(pathtypenames[0]);
- for (int i = 0; i < n; i++)
- if (stripfx(args, pathtypenames[i])) {
- editorpathtype = i;
- break;
- }
-}
-
-static void ch_hs(const char *args)
-{
- hotspot[numhotspots] = player[0].coords;
-
- float size;
- int type, shift;
- sscanf(args, "%f%d %n", &size, &type, &shift);
-
- hotspotsize[numhotspots] = size;
- hotspottype[numhotspots] = type;
-
- strcpy(hotspottext[numhotspots], args + shift);
- strcat(hotspottext[numhotspots], "\n");
-
- numhotspots++;
-}
-
-static void ch_dialogue(const char *args)
-{
- int dlg;
- char buf1[32], buf2[64];
-
- sscanf(args, "%d %31s", &dlg, buf1);
- snprintf(buf2, 63, ":Data:Dialogues:%s.txt", buf1);
-
- dialoguetype[numdialogues] = dlg;
-
- memset(dialoguetext[numdialogues], 0, sizeof(dialoguetext[numdialogues]));
- memset(dialoguename[numdialogues], 0, sizeof(dialoguename[numdialogues]));
-
- ifstream ipstream(ConvertFileName(buf2));
- ipstream.ignore(256, ':');
- ipstream >> numdialogueboxes[numdialogues];
- for (int i = 0; i < numdialogueboxes[numdialogues]; i++) {
- ipstream.ignore(256, ':');
- ipstream.ignore(256, ':');
- ipstream.ignore(256, ' ');
- ipstream >> dialogueboxlocation[numdialogues][i];
- ipstream.ignore(256, ':');
- ipstream >> dialogueboxcolor[numdialogues][i][0];
- ipstream >> dialogueboxcolor[numdialogues][i][1];
- ipstream >> dialogueboxcolor[numdialogues][i][2];
- ipstream.ignore(256, ':');
- ipstream.getline(dialoguename[numdialogues][i], 64);
- ipstream.ignore(256, ':');
- ipstream.ignore(256, ' ');
- ipstream.getline(dialoguetext[numdialogues][i], 128);
- for (int j = 0; j < 128; j++) {
- if (dialoguetext[numdialogues][i][j] == '\\')
- dialoguetext[numdialogues][i][j] = '\n';
- }
- ipstream.ignore(256, ':');
- ipstream >> dialogueboxsound[numdialogues][i];
- }
-
- for (int i = 0; i < numdialogueboxes[numdialogues]; i++) {
- for (int j = 0; j < numplayers; j++) {
- participantfacing[numdialogues][i][j] = player[j].facing;
- }
- }
- ipstream.close();
-
- directing = 1;
- indialogue = 0;
- whichdialogue = numdialogues;
-
- numdialogues++;
-}
-
-static void ch_fixdialogue(const char *args)
-{
- char buf1[32], buf2[64];
- int whichdi;
-
- sscanf(args, "%d %31s", &whichdi, buf1);
- snprintf(buf2, 63, ":Data:Dialogues:%s.txt", buf1);
-
- memset(dialoguetext[whichdi], 0, sizeof(dialoguetext[whichdi]));
- memset(dialoguename[whichdi], 0, sizeof(dialoguename[whichdi]));
-
- ifstream ipstream(ConvertFileName(buf2));
- ipstream.ignore(256, ':');
- ipstream >> numdialogueboxes[whichdi];
- for (int i = 0; i < numdialogueboxes[whichdi]; i++) {
- ipstream.ignore(256, ':');
- ipstream.ignore(256, ':');
- ipstream.ignore(256, ' ');
- ipstream >> dialogueboxlocation[whichdi][i];
- ipstream.ignore(256, ':');
- ipstream >> dialogueboxcolor[whichdi][i][0];
- ipstream >> dialogueboxcolor[whichdi][i][1];
- ipstream >> dialogueboxcolor[whichdi][i][2];
- ipstream.ignore(256, ':');
- ipstream.getline(dialoguename[whichdi][i], 64);
- ipstream.ignore(256, ':');
- ipstream.ignore(256, ' ');
- ipstream.getline(dialoguetext[whichdi][i], 128);
- for (int j = 0; j < 128; j++) {
- if (dialoguetext[whichdi][i][j] == '\\')
- dialoguetext[whichdi][i][j] = '\n';
- }
- ipstream.ignore(256, ':');
- ipstream >> dialogueboxsound[whichdi][i];
- }
-
- ipstream.close();
-}
-
-static void ch_fixtype(const char *args)
-{
- int dlg;
- sscanf(args, "%d", &dlg);
- dialoguetype[0] = dlg;
-}
-
-static void ch_fixrotation(const char *args)
-{
- participantyaw[whichdialogue][participantfocus[whichdialogue][indialogue]] = player[participantfocus[whichdialogue][indialogue]].yaw;
-}
-
-static void ch_ddialogue(const char *args)
-{
- if (numdialogues)
- numdialogues--;
-}
-
-static void ch_dhs(const char *args)
-{
- if (numhotspots)
- numhotspots--;
-}
-
-static void ch_immobile(const char *args)
-{
- player[0].immobile = 1;
-}
-
-static void ch_allimmobile(const char *args)
-{
- for (int i = 1; i < numplayers; i++)
- player[i].immobile = 1;
-}
-
-static void ch_mobile(const char *args)
-{
- player[0].immobile = 0;
-}
-
-static void ch_default(const char *args)
-{
- player[0].armorhead = 1;
- player[0].armorhigh = 1;
- player[0].armorlow = 1;
- player[0].protectionhead = 1;
- player[0].protectionhigh = 1;
- player[0].protectionlow = 1;
- player[0].metalhead = 1;
- player[0].metalhigh = 1;
- player[0].metallow = 1;
- player[0].power = 1;
- player[0].speedmult = 1;
- player[0].scale = 1;
-
- if (player[0].creature == wolftype) {
- player[0].proportionhead = 1.1;
- player[0].proportionbody = 1.1;
- player[0].proportionarms = 1.1;
- player[0].proportionlegs = 1.1;
- } else if (player[0].creature == rabbittype) {
- player[0].proportionhead = 1.2;
- player[0].proportionbody = 1.05;
- player[0].proportionarms = 1.00;
- player[0].proportionlegs = 1.1;
- player[0].proportionlegs.y = 1.05;
- }
-
- player[0].numclothes = 0;
- player[0].skeleton.drawmodel.textureptr.load(
- creatureskin[player[0].creature][player[0].whichskin], 1,
- &player[0].skeleton.skinText[0], &player[0].skeleton.skinsize);
-
- editoractive = typeactive;
- player[0].immobile = 0;
-}
-
-static void ch_play(const char *args)
-{
- int dlg;
- sscanf(args, "%d", &dlg);
- whichdialogue = dlg;
-
- if (whichdialogue >= numdialogues)
- return;
-
- for (int i = 0; i < numdialogueboxes[whichdialogue]; i++) {
- player[participantfocus[whichdialogue][i]].coords = participantlocation[whichdialogue][participantfocus[whichdialogue][i]];
- player[participantfocus[whichdialogue][i]].yaw = participantyaw[whichdialogue][participantfocus[whichdialogue][i]];
- player[participantfocus[whichdialogue][i]].targetyaw = participantyaw[whichdialogue][participantfocus[whichdialogue][i]];
- player[participantfocus[whichdialogue][i]].velocity = 0;
- player[participantfocus[whichdialogue][i]].animTarget = player[participantfocus[whichdialogue][i]].getIdle();
- player[participantfocus[whichdialogue][i]].frameTarget = 0;
- }
-
- directing = 0;
- indialogue = 0;
-
- playdialogueboxsound();
-}
-
-static void ch_mapkilleveryone(const char *args)
-{
- maptype = mapkilleveryone;
-}
-
-static void ch_mapkillmost(const char *args)
-{
- maptype = mapkillmost;
-}
-
-static void ch_mapkillsomeone(const char *args)
-{
- maptype = mapkillsomeone;
-}
-
-static void ch_mapgosomewhere(const char *args)
-{
- maptype = mapgosomewhere;
-}
-
-static void ch_viewdistance(const char *args)
-{
- viewdistance = atof(args) * 100;
-}
-
-static void ch_fadestart(const char *args)
-{
- fadestart = atof(args);
-}
-
-static void ch_slomo(const char *args)
-{
- slomospeed = atof(args);
- slomo = !slomo;
- slomodelay = 1000;
-}
-
-static void ch_slofreq(const char *args)
-{
- slomofreq = atof(args);
-}
-
-static void ch_skytint(const char *args)
-{
- sscanf(args, "%f%f%f", &skyboxr, &skyboxg, &skyboxb);
-
- skyboxlightr = skyboxr;
- skyboxlightg = skyboxg;
- skyboxlightb = skyboxb;
-
- SetUpLighting();
-
- terrain.DoShadows();
- objects.DoShadows();
-}
-
-static void ch_skylight(const char *args)
-{
- sscanf(args, "%f%f%f", &skyboxlightr, &skyboxlightg, &skyboxlightb);
-
- SetUpLighting();
-
- terrain.DoShadows();
- objects.DoShadows();
-}
-
-static void ch_skybox(const char *args)
-{
- skyboxtexture = !skyboxtexture;
-
- SetUpLighting();
-
- terrain.DoShadows();
- objects.DoShadows();
-}
-