Compare commits

...

12 Commits

73 changed files with 5992 additions and 886 deletions

38
src/client/cmds.qc Normal file
View File

@ -0,0 +1,38 @@
/*
* Copyright (c) 2016-2020 Marco Cawthorne <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
void VGUI_ChooseClass(float);
int
ClientGame_ConsoleCommand(void)
{
switch(argv(0)) {
case "changeteam":
if (OP4_IsCTF()) {
VGUI_ChooseTeam();
} else {
sendevent("HLDM_Chooseteam", "s", argv(1));
}
break;
case "changeclass":
if (OP4_IsCTF())
VGUI_ChooseClass(0);
break;
default:
return (0);
}
return (1);
}

34
src/client/defs_op4.h Normal file
View File

@ -0,0 +1,34 @@
/*
* Copyright (c) 2016-2020 Marco Cawthorne <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
var string g_ctfhud1_spr;
var string g_ctfhud2_spr;
var string g_ofhud1_spr;
var string g_ofhud2_spr;
var string g_ofhud3_spr;
var string g_ofhud4_spr;
var string g_ofhud5_spr;
var string g_ofhud6_spr;
var string g_ofch1_spr;
var string g_ofch2_spr;
bool
OP4_IsCTF(void)
{
return serverkeyfloat("ctf") == 0 ? false : true;
}

View File

@ -14,6 +14,64 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
void HUD_DrawNums(float fNumber, vector vecPos, float fAlpha, vector vColor);
void
OP4CTF_DrawHud(player pl)
{
vector iconPos = g_vec_null;
vector iconBMOfs = g_vec_null;
vector iconOP4Ofs = g_vec_null;
bool myTeam = getplayerkeyfloat(player_localnum, "*team");
iconPos = g_hudmins + [16, g_hudres[1] - 142];
if (serverkeyfloat("ctfflag_1") == CTFFLAG_IDLE)
iconBMOfs = [67/256, 77/256];
else if (serverkeyfloat("ctfflag_1") == CTFFLAG_TAKEN && myTeam == 1)
iconBMOfs = [105/256, 77/256];
else if (serverkeyfloat("ctfflag_1") == CTFFlAG_MISSING)
iconBMOfs = [143/256, 77/256];
else if (serverkeyfloat("ctfflag_1") == CTFFLAG_TAKEN )
iconBMOfs = [181/256, 77/256];
if (serverkeyfloat("ctfflag_2") == CTFFLAG_IDLE)
iconOP4Ofs = [67/256, 77/256];
else if (serverkeyfloat("ctfflag_2") == CTFFLAG_TAKEN && myTeam == 2)
iconOP4Ofs = [105/256, 77/256];
else if (serverkeyfloat("ctfflag_2") == CTFFlAG_MISSING)
iconOP4Ofs = [143/256, 77/256];
else if (serverkeyfloat("ctfflag_2") == CTFFLAG_TAKEN)
iconOP4Ofs = [181/256, 77/256];
/* black mesa team flag */
drawsubpic(
iconPos,
[38, 38],
g_ctfhud1_spr,
iconBMOfs,
[38/256, 38/256],
[1,1,0],
1.0f,
DRAWFLAG_ADDITIVE
);
HUD_DrawNums(serverkeyfloat("teamscore_1"), iconPos + [64, 6], 1.0, [1,1,0]);
/* opfor team flag */
drawsubpic(
iconPos + [0, 38],
[38, 38],
g_ctfhud1_spr,
iconOP4Ofs,
[38/256, 38/256],
[0,1,0],
1.0f,
DRAWFLAG_ADDITIVE
);
HUD_DrawNums(serverkeyfloat("teamscore_2"), iconPos + [64, 44], 1.0, [0,1,0]);
}
void
ClientGame_PreDraw(void)
{
@ -24,4 +82,77 @@ void
ClientGame_PostDraw(void)
{
Nightvision_PostDraw();
/* CTF Power-Up icons */
{
player pl = (player)pSeat->m_ePlayer;
vector pickupPos;
pickupPos = g_hudmins + [16, (g_hudres[1] / 2) - 32];
if (OP4_IsCTF()) {
OP4CTF_DrawHud(pl);
}
if (pl.g_items & ITEM_CTF_HEALTH) {
drawsubpic(
pickupPos,
[64, 64],
g_ctfhud1_spr,
[0, 0],
[0.25, 0.25],
[0,1,0],
1.0f,
DRAWFLAG_ADDITIVE
);
}
if (pl.g_items & ITEM_CTF_DEATH) {
drawsubpic(
pickupPos,
[64, 64],
g_ctfhud1_spr,
[0.25, 0],
[0.25, 0.25],
[1,0,0],
1.0f,
DRAWFLAG_ADDITIVE
);
}
if (pl.g_items & ITEM_CTF_JUMPPACK) {
drawsubpic(
pickupPos,
[64, 64],
g_ctfhud1_spr,
[0.5, 0],
[0.25, 0.25],
[1,0.5,0],
1.0f,
DRAWFLAG_ADDITIVE
);
}
if (pl.g_items & ITEM_CTF_SHIELD) {
drawsubpic(
pickupPos,
[64, 64],
g_ctfhud1_spr,
[0.75, 0],
[0.25, 0.25],
[0.25,0.25,1],
1.0f,
DRAWFLAG_ADDITIVE
);
}
if (pl.g_items & ITEM_CTF_BACKPACK) {
drawsubpic(
pickupPos,
[64, 64],
g_ctfhud1_spr,
[0, 0.25],
[0.25, 0.25],
[1,1,0],
1.0f,
DRAWFLAG_ADDITIVE
);
}
}
}

View File

@ -15,7 +15,7 @@
*/
float(entity foo, float chanid) getchannellevel = #0;
void VGUI_ChooseTeam(void);
/*
=================
@ -27,38 +27,43 @@ Comparable to worldspawn in SSQC in that it's mostly used for precaches
void
ClientGame_Init(float apilevel, string enginename, float engineversion)
{
registercommand("changeteam");
registercommand("changeclass");
Obituary_Init();
}
void
ClientGame_InitDone(void)
{
if (OP4_IsCTF()) {
VGUI_ChooseTeam();
}
}
void HLSprite_Init(void);
void
ClientGame_RendererRestart(string rstr)
{
Nightvision_Init();
Obituary_Precache();
Damage_Precache();
HLSprite_Init();
FX_Blood_Init();
FX_BreakModel_Init();
FX_Explosion_Init();
FX_GibHuman_Init();
FX_Spark_Init();
FX_Impact_Init();
precache_model("sprites/640hudof01.spr");
precache_model("sprites/640hudof02.spr");
precache_model("sprites/640hudof03.spr");
precache_model("sprites/640hudof04.spr");
precache_model("sprites/640hudof05.spr");
precache_model("sprites/640hudof06.spr");
precache_model("sprites/ofch1.spr");
precache_model("sprites/ofch2.spr");
g_ofhud1_spr = spriteframe("sprites/640hudof01.spr", 0, 0.0f);
g_ofhud2_spr = spriteframe("sprites/640hudof02.spr", 0, 0.0f);
g_ofhud3_spr = spriteframe("sprites/640hudof03.spr", 0, 0.0f);
g_ofhud4_spr = spriteframe("sprites/640hudof04.spr", 0, 0.0f);
g_ofhud5_spr = spriteframe("sprites/640hudof05.spr", 0, 0.0f);
g_ofhud6_spr = spriteframe("sprites/640hudof06.spr", 0, 0.0f);
g_ofch1_spr = spriteframe("sprites/ofch1.spr", 0, 0.0f);
g_ofch2_spr = spriteframe("sprites/ofch2.spr", 0, 0.0f);
precache_model("sprites/320hudof01.spr");
g_ctfhud1_spr = spriteframe("sprites/ctf_hud1.spr", 0, 0.0f);
g_ctfhud2_spr = spriteframe("sprites/ctf_hud1.spr", 0, 0.0f);
/* there's also muzzleflash.spr, but that's just MUZZLE_SMALL again */
MUZZLE_RIFLE = (int)getmodelindex("sprites/muzzleflash1.spr");
MUZZLE_SMALL = (int)getmodelindex("sprites/muzzleflash2.spr");

View File

@ -12,6 +12,7 @@
../../../src/shared/defs.h
../../../valve/src/client/defs.h
../../../src/client/defs.h
defs_op4.h
../../../src/vgui/include.src
@ -25,12 +26,13 @@ nightvision.qc
draw.qc
init.qc
../../../valve/src/client/entities.qc
../../../valve/src/client/cmds.qc
cmds.qc
../../../valve/src/client/game_event.qc
../../../valve/src/client/camera.qc
../../../valve/src/client/viewmodel.qc
../../../valve/src/client/view.qc
../../../valve/src/client/obituary.qc
../../../valve/src/client/hud_sprite.qc
../../../valve/src/client/hud_ammonotify.qc
../../../valve/src/client/hud_dmgnotify.qc
../../../valve/src/client/hud_itemnotify.qc
@ -40,5 +42,7 @@ hud_weaponselect.qc
../../../valve/src/client/modelevent.qc
../../../src/client/include.src
vgui_changechar.qc
vgui_chooseteam.qc
../../../src/shared/include.src
#endlist

View File

@ -0,0 +1,304 @@
/*
* Copyright (c) 2016-2020 Marco Cawthorne <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
static string g_charDescrAdrian;
static string g_charDescrBarney;
static string g_charDescrCivRandom;
static string g_charDescrCleansuit;
static string g_charDescrDrillsgt;
static string g_charDescrGina;
static string g_charDescrGordon;
static string g_charDescrGrunt;
static string g_charDescrRandom;
static string g_charDescrOtis;
static string g_charDescrTandom;
static string g_charDescrRecruit;
static string g_charDescrScientist;
static string g_charDescrSquadleader;
static string g_charDescrTower;
static void
OP4Char_Init(void)
{
g_charDescrAdrian = textfile_to_string("classes/short_adrian.txt");
g_charDescrBarney = textfile_to_string("classes/short_barney.txt");
g_charDescrCivRandom = textfile_to_string("classes/short_civ_random.txt");
g_charDescrCleansuit = textfile_to_string("classes/short_cleansuit.txt");
g_charDescrDrillsgt = textfile_to_string("classes/short_drillsgt.txt");
g_charDescrGina = textfile_to_string("classes/short_gina.txt");
g_charDescrGordon = textfile_to_string("classes/short_gordon.txt");
g_charDescrGrunt = textfile_to_string("classes/short_grunt.txt");
g_charDescrRandom = textfile_to_string("classes/short_op4_random.txt");
g_charDescrOtis = textfile_to_string("classes/short_otis.txt");
g_charDescrTandom = textfile_to_string("classes/short_random.txt");
g_charDescrRecruit = textfile_to_string("classes/short_recruit.txt");
g_charDescrScientist = textfile_to_string("classes/short_scientist.txt");
g_charDescrSquadleader = textfile_to_string("classes/short_squadleader.txt");
g_charDescrTower = textfile_to_string("classes/short_tower.txt");
}
static VGUIWindow winCharSelection;
static VGUIPic imgCharPreview;
static VGUILabel lblCharTitle;
static VGUILabel lblCharDescription;
static VGUILabel lblCharCounter;
class OP4CharButton:VGUIButton
{
void OP4CharButton(void);
virtual void OnMouseUp(void);
virtual void OnMouseEntered(void);
};
void
OP4CharButton::OP4CharButton(void)
{
}
void
OP4CharButton::OnMouseUp(void)
{
int classSelection = GetTag();
sendevent("ClassJoin", "f", (float)classSelection);
winCharSelection.Hide();
}
void
OP4CharButton::OnMouseEntered(void)
{
int classSelection = GetTag();
switch (classSelection) {
case 1:
lblCharTitle.SetTitle(Titles_GetTextBody("CTFTitle_Barney"));
imgCharPreview.SetImage("gfx/vgui/640_barney");
lblCharDescription.SetTitle(g_charDescrBarney);
break;
case 2:
lblCharTitle.SetTitle(Titles_GetTextBody("CTFTitle_Cleansuit"));
imgCharPreview.SetImage("gfx/vgui/640_cleansuit");
lblCharDescription.SetTitle(g_charDescrCleansuit);
break;
case 3:
lblCharTitle.SetTitle(Titles_GetTextBody("CTFTitle_Gina"));
imgCharPreview.SetImage("gfx/vgui/640_gina");
lblCharDescription.SetTitle(g_charDescrGina);
break;
case 4:
lblCharTitle.SetTitle(Titles_GetTextBody("CTFTitle_Gordon"));
imgCharPreview.SetImage("gfx/vgui/640_gordon");
lblCharDescription.SetTitle(g_charDescrGordon);
break;
case 5:
lblCharTitle.SetTitle(Titles_GetTextBody("CTFTitle_Otis"));
imgCharPreview.SetImage("gfx/vgui/640_otis");
lblCharDescription.SetTitle(g_charDescrOtis);
break;
case 6:
lblCharTitle.SetTitle(Titles_GetTextBody("CTFTitle_Scientist"));
imgCharPreview.SetImage("gfx/vgui/640_scientist");
lblCharDescription.SetTitle(g_charDescrScientist);
break;
case 0:
lblCharTitle.SetTitle(Titles_GetTextBody("CTFTitle_Civ_Random"));
imgCharPreview.SetImage("gfx/vgui/640_civ_random");
lblCharDescription.SetTitle(g_charDescrCivRandom);
break;
case 7:
lblCharTitle.SetTitle(Titles_GetTextBody("CTFTitle_SquadLeader"));
imgCharPreview.SetImage("gfx/vgui/640_squadleader");
lblCharDescription.SetTitle(g_charDescrSquadleader);
break;
case 8:
lblCharTitle.SetTitle(Titles_GetTextBody("CTFTitle_DrillSgt"));
imgCharPreview.SetImage("gfx/vgui/640_drillsgt");
lblCharDescription.SetTitle(g_charDescrDrillsgt);
break;
case 9:
lblCharTitle.SetTitle(Titles_GetTextBody("CTFTitle_Grunt"));
imgCharPreview.SetImage("gfx/vgui/640_grunt");
lblCharDescription.SetTitle(g_charDescrGrunt);
break;
case 10:
lblCharTitle.SetTitle(Titles_GetTextBody("CTFTitle_Recruit"));
imgCharPreview.SetImage("gfx/vgui/640_recruit");
lblCharDescription.SetTitle(g_charDescrRecruit);
break;
case 11:
lblCharTitle.SetTitle(Titles_GetTextBody("CTFTitle_Adrian"));
imgCharPreview.SetImage("gfx/vgui/640_adrian");
lblCharDescription.SetTitle(g_charDescrAdrian);
break;
case 12:
lblCharTitle.SetTitle(Titles_GetTextBody("CTFTitle_Tower"));
imgCharPreview.SetImage("gfx/vgui/640_tower");
lblCharDescription.SetTitle(g_charDescrTower);
break;
case 13:
lblCharTitle.SetTitle(Titles_GetTextBody("CTFTitle_Op4_Random"));
imgCharPreview.SetImage("gfx/vgui/640_op4_random");
lblCharDescription.SetTitle(g_charDescrTandom);
break;
}
}
/*
Char/Char list:
Barney
CleansuitSci
Gina
Freeman
Otis
Walter(Scientist)
Random
Squad Leader
Drill Sgt
Grunt
Recruit
Shepard
Tower
OP4Random
*/
string g_classnames_blackmesa [] = {
"Barney",
"Cleansuit",
"Gina",
"Gordon",
"Otis",
"Scientist",
"Civ_Random"
};
string g_classnames_opfor [] = {
"SquadLeader",
"DrillSgt",
"Grunt",
"Recruit",
"Adrian",
"Tower",
"Op4_Random"
};
void
VGUI_ChooseClass(float teamChoice)
{
static int initialized;
static OP4CharButton *btns;
static VGUILabel lblSelectChar;
static VGUIFrame frmCharInfo;
if (!teamChoice)
teamChoice = getplayerkeyfloat(player_localnum, "*team");
if (!initialized) {
vector btnpos = [40,80];
initialized = TRUE;
OP4Char_Init();
winCharSelection = spawn(VGUIWindow);
winCharSelection.SetSize([640, 480]);
winCharSelection.SetStyleMask(VGUIWindowBorderless | VGUIWindowFullscreen);
lblSelectChar = spawn(VGUILabel);
lblSelectChar.SetTitle(Titles_GetTextBody("CTFTitle_SelectYourCharacter"));
lblSelectChar.SetTextSize(19);
lblSelectChar.SetPos([40, 38]);
lblSelectChar.SetSize([400, 24]);
frmCharInfo = spawn(VGUIFrame);
frmCharInfo.SetPos([176, 80]);
frmCharInfo.SetSize([424, 312]);
imgCharPreview = spawn(VGUIPic);
imgCharPreview.SetPos([190, 90]);
lblCharTitle = spawn(VGUILabel);
lblCharTitle.SetPos([338, 90]);
lblCharTitle.SetTextSize(19);
lblCharTitle.SetSize([320, 24]);
lblCharCounter = spawn(VGUILabel);
lblCharCounter.SetPos([338, 90 + 32]);
lblCharCounter.SetSize([320, 18]);
lblCharDescription = spawn(VGUILabel);
lblCharDescription.SetPos([338, 90 + 32 + 32]);
lblCharDescription.SetSize([250, 240]);
g_uiDesktop.Add(winCharSelection);
winCharSelection.Add(lblSelectChar);
winCharSelection.Add(frmCharInfo);
winCharSelection.Add(imgCharPreview);
winCharSelection.Add(lblCharTitle);
winCharSelection.Add(lblCharCounter);
winCharSelection.Add(lblCharDescription);
btns = memalloc(sizeof(OP4CharButton) * g_classnames_blackmesa.length);
for (int i = 0; i < g_classnames_blackmesa.length; i++) {
btns[i] = spawn(OP4CharButton);
btns[i].SetTitle(Titles_GetTextBody(g_classnames_blackmesa[i]));
btns[i].SetSize([124, 24]);
btns[i].SetPos(btnpos);
if (i == 7) {
btns[i].SetKeyEquivalent("0");
btns[i].SetTag(0);
} else {
btns[i].SetKeyEquivalent(ftos((float)i+1));
btns[i].SetTag(i+1i);
}
winCharSelection.Add(btns[i]);
btnpos[1] += 32;
}
}
/* relabel the buttons for the currently selected team. */
for (int i = 0; i < g_classnames_blackmesa.length; i++) {
if (teamChoice == 1) {
btns[i].SetTitle(Titles_GetTextBody(g_classnames_blackmesa[i]));
if (i == 6) {
btns[i].SetKeyEquivalent("0");
btns[i].SetTag(0);
} else {
btns[i].SetKeyEquivalent(ftos((float)i+1));
btns[i].SetTag(i+1i);
}
} else {
btns[i].SetTitle(Titles_GetTextBody(g_classnames_opfor[i]));
if (i == 6) {
btns[i].SetTag(13);
btns[i].SetKeyEquivalent("0");
} else {
btns[i].SetTag(6 + i+1i);
btns[i].SetKeyEquivalent(ftos((float)i+1));
}
}
}
winCharSelection.Show();
winCharSelection.SetPos((video_res / 2) - (winCharSelection.GetSize() / 2));
}

View File

@ -0,0 +1,165 @@
/*
* Copyright (c) 2016-2020 Marco Cawthorne <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
static VGUIWindow winChooseTeam;
class OP4TeamButton:VGUIButton
{
void OP4TeamButton(void);
virtual void OnMouseUp(void);
};
void
OP4TeamButton::OP4TeamButton(void)
{
}
void
OP4TeamButton::OnMouseUp(void)
{
int tag = GetTag();
VGUI_ChooseClass(tag);
sendevent("TeamJoin", "f", (float)tag);
winChooseTeam.Hide();
}
string
VGUI_ChooseTeam_MapInfo(void)
{
static string mapinfo = __NULL__;
if (mapinfo != __NULL__)
return mapinfo;
filestream fileMap = fopen(strcat("maps/", mapname, ".txt"), FILE_READ);
string temp;
if (fileMap != -1) {
while ((temp = fgets(fileMap))) {
mapinfo = strcat(mapinfo, temp, "\n");
}
} else {
mapinfo = Titles_GetTextBody("Map_Description_not_available");
}
return mapinfo;
}
void
VGUI_ChooseTeam(void)
{
static int initialized;
static VGUIButton btnAutoAssign;
static VGUIButton btnGoSpectator;
static VGUIFrame frmMapInfo;
static VGUILabel lblSelectTeam;
static VGUILabel lblMapName;
static VGUILabel lblMapInfo;
static void VGUI_AutoAssign(void) {
float tag = (random() < 0.5) ? 1 : 2;
VGUI_ChooseClass(tag);
sendevent("TeamJoin", "f", tag);
winChooseTeam.Hide();
}
static void VGUI_GoSpectator(void) {
sendevent("TeamJoin", "f", 0);
winChooseTeam.Hide();
}
if (!initialized) {
vector btnpos = [40,80];
initialized = TRUE;
winChooseTeam = spawn(VGUIWindow);
winChooseTeam.SetSize('640 480');
winChooseTeam.SetStyleMask(VGUIWindowBorderless | VGUIWindowFullscreen);
lblSelectTeam = spawn(VGUILabel);
lblSelectTeam.SetTitle(Titles_GetTextBody("CTFTitle_SelectYourTeam"));
lblSelectTeam.SetTextSize(19);
lblSelectTeam.SetPos([40, 38]);
lblSelectTeam.SetSize('400 24');
frmMapInfo = spawn(VGUIFrame);
frmMapInfo.SetPos('176 80');
frmMapInfo.SetSize('424 312');
lblMapName = spawn(VGUILabel);
lblMapName.SetTitle(mapname);
lblMapName.SetTextSize(19);
lblMapName.SetPos('194 105');
lblMapName.SetSize('250 312');
lblMapInfo = spawn(VGUILabel);
lblMapInfo.SetTitle(VGUI_ChooseTeam_MapInfo());
lblMapInfo.SetPos('194 129');
lblMapInfo.SetSize('375 250');
for (int t = 1; t <= serverkeyfloat("teams"); t++) {
OP4TeamButton btnForTeam;
string team_name = serverkey(sprintf("team_%i", t));
btnForTeam = spawn(OP4TeamButton);
btnForTeam.SetTitle(team_name);
btnForTeam.SetPos(btnpos);
btnForTeam.SetKeyEquivalent(ftos((float)t));
btnForTeam.SetSize('124 24');
switch (team_name) {
case "Black Mesa":
btnForTeam.SetTag(1);
break;
case "Opposing Force":
btnForTeam.SetTag(2);
break;
}
winChooseTeam.Add(btnForTeam);
btnpos[1] += 32;
}
btnAutoAssign = spawn(VGUIButton);
btnAutoAssign.SetTitle(Titles_GetTextBody("CTFTeam_AutoAssign"));
btnAutoAssign.SetPos(btnpos);
btnAutoAssign.SetSize('124 24');
btnAutoAssign.SetKeyEquivalent("5");
btnAutoAssign.SetFunc(VGUI_AutoAssign);
btnpos[1] += 32;
btnGoSpectator = spawn(VGUIButton);
btnGoSpectator.SetTitle(Titles_GetTextBody("CTFMenu_Spectate"));
btnGoSpectator.SetPos(btnpos);
btnGoSpectator.SetSize('124 24');
btnGoSpectator.SetKeyEquivalent("6");
btnGoSpectator.SetFunc(VGUI_GoSpectator);
g_uiDesktop.Add(winChooseTeam);
winChooseTeam.Add(frmMapInfo);
winChooseTeam.Add(lblSelectTeam);
winChooseTeam.Add(lblMapName);
winChooseTeam.Add(lblMapInfo);
winChooseTeam.Add(btnAutoAssign);
winChooseTeam.Add(btnGoSpectator);
}
winChooseTeam.Show();
winChooseTeam.SetPos((video_res / 2) - (winChooseTeam.GetSize() / 2));
}

106
src/server/ctfitem.qc Normal file
View File

@ -0,0 +1,106 @@
/*
* Copyright (c) 2023 Marco Cawthorne <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
class OP4CTFItem:NSRenderableEntity
{
public:
void OP4CTFItem(void);
virtual void Respawn(void);
virtual void Touch(entity);
nonvirtual bool CanPlayerGrabPowerup(entity);
virtual void SpawnKey(string, string);
private:
int m_iItemID;
float m_iTeamID;
string m_strScoreIcon;
vector m_vecScoreColor;
};
void
OP4CTFItem::OP4CTFItem(void)
{
m_iItemID = 0i;
m_strScoreIcon = __NULL__;
m_iTeamID = 0;
m_vecScoreColor = [1,1,1];
}
void
OP4CTFItem::Respawn(void)
{
SetSolid(SOLID_TRIGGER);
SetMovetype(MOVETYPE_NONE);
SetOrigin(GetSpawnOrigin());
SetModel(GetSpawnModel());
SetSize([-16, -16, 0], [16, 16, 72]);
DropToFloor();
}
void
OP4CTFItem::SpawnKey(string strKey, string strValue)
{
switch (strKey) {
case "goal_no":
m_iTeamID = ReadFloat(strValue);
break;
default:
super::SpawnKey(strKey, strValue);
}
}
void
OP4CTFItem::Touch(entity toucherEntity)
{
player pl = (player)toucherEntity;
if (!m_iItemID)
return;
if (!(toucherEntity.flags & FL_CLIENT))
return;
if (CanPlayerGrabPowerup(toucherEntity) == false)
return;
pl.g_items |= m_iItemID; /* add to inventory */
forceinfokey(pl, "*icon2", m_strScoreIcon);
forceinfokey(pl, "*icon2_r", ftos(m_vecScoreColor[0]));
forceinfokey(pl, "*icon2_g", ftos(m_vecScoreColor[1]));
forceinfokey(pl, "*icon2_b", ftos(m_vecScoreColor[2]));
Destroy();
}
bool
OP4CTFItem::CanPlayerGrabPowerup(entity playerEntity)
{
player pl = (player)playerEntity;
if (pl.g_items & ITEM_CTF_JUMPPACK)
return false;
if (pl.g_items & ITEM_CTF_SHIELD)
return false;
if (pl.g_items & ITEM_CTF_HEALTH)
return false;
if (pl.g_items & ITEM_CTF_DEATH)
return false;
if (pl.g_items & ITEM_CTF_BACKPACK)
return false;
return true;
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2016-2020 Marco Cawthorne <marco@icculus.org>
* Copyright (c) 2016-2023 Marco Cawthorne <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above

View File

@ -180,6 +180,32 @@ TriggerFlashlight(NSClient target)
self = oldself;
}
void
DropCTFItem(NSClientPlayer pl)
{
string item;
if (pl.classname != "player")
return;
if (pl.g_items & ITEM_CTF_JUMPPACK) {
item = "item_ctflongjump";
pl.g_items &= ~ ITEM_CTF_JUMPPACK;
} else if (pl.g_items & ITEM_CTF_SHIELD) {
item = "item_ctfportablehev";
pl.g_items &= ~ ITEM_CTF_SHIELD;
} else if (pl.g_items & ITEM_CTF_HEALTH) {
item = "item_ctfregeneration";
pl.g_items &= ~ ITEM_CTF_HEALTH;
} else if (pl.g_items & ITEM_CTF_DEATH) {
item = "item_ctfaccelerator";
pl.g_items &= ~ ITEM_CTF_DEATH;
} else if (pl.g_items & ITEM_CTF_BACKPACK) {
item = "item_ctfbackpack";
pl.g_items &= ~ ITEM_CTF_BACKPACK;
}
}
bool
HLGameRules::ImpulseCommand(NSClient bp, float num)
{
@ -187,6 +213,9 @@ HLGameRules::ImpulseCommand(NSClient bp, float num)
case 100:
TriggerFlashlight(bp);
break;
case 205:
DropCTFItem((player)bp);
break;
default:
return super::ImpulseCommand(bp, num);
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2016-2020 Marco Cawthorne <marco@icculus.org>
* Copyright (c) 2016-2023 Marco Cawthorne <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@ -14,14 +14,19 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
class OP4CTFRules:HLGameRules
class OP4CTFRules:HLMultiplayerRules
{
int m_iIntermission;
int m_iIntermissionTime;
void OP4CTFRules(void);
virtual void(void) FrameStart;
virtual void InitPostEnts(void);
virtual void PlayerSpawn(NSClientPlayer);
virtual void PlayerDeath(NSClientPlayer);
virtual void PlayerConnect(NSClientPlayer);
virtual void PlayerDisconnect(NSClientPlayer);
virtual bool ConsoleCommand(NSClientPlayer, string);
virtual bool IsTeamplay(void);
/* client */
virtual void(NSClientPlayer) PlayerSpawn;
virtual void(NSClientPlayer) PlayerDeath;
nonvirtual void CharacterSpawn(NSClientPlayer, string);
nonvirtual void CaptureFlag(NSClientPlayer);
nonvirtual void DropFlag(NSClientPlayer);
};

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2016-2020 Marco Cawthorne <marco@icculus.org>
* Copyright (c) 2023 Marco Cawthorne <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@ -15,70 +15,47 @@
*/
void
OP4CTFRules::FrameStart(void)
OP4CTFRules::OP4CTFRules(void)
{
if (cvar("mp_timelimit"))
if (time >= (cvar("mp_timelimit") * 60)) {
IntermissionStart();
}
}
void
OP4CTFRules::PlayerDeath(NSClientPlayer pp)
OP4CTFRules::InitPostEnts(void)
{
player pl = (player)pp;
FX_Corpse_Spawn((player)g_dmg_eAttacker, ANIM_DIESIMPLE);
/* Opfor CTF only has two teams. */
forceinfokey(world, "teams", "2");
forceinfokey(world, "team_1", "Black Mesa");
forceinfokey(world, "teamscore_1", "0");
forceinfokey(world, "team_2", "Opposing Force");
forceinfokey(world, "teamscore_2", "0");
/* obituary networking */
WriteByte(MSG_MULTICAST, SVC_CGAMEPACKET);
WriteByte(MSG_MULTICAST, EV_OBITUARY);
if (g_dmg_eAttacker.netname)
WriteString(MSG_MULTICAST, g_dmg_eAttacker.netname);
else
WriteString(MSG_MULTICAST, g_dmg_eAttacker.classname);
WriteString(MSG_MULTICAST, pl.netname);
WriteByte(MSG_MULTICAST, g_dmg_iWeapon);
WriteByte(MSG_MULTICAST, 0);
msg_entity = world;
multicast([0,0,0], MULTICAST_ALL);
forceinfokey(world, "ctfflag_1", "0");
forceinfokey(world, "ctfflag_2", "0");
forceinfokey(world, "scorepoints", "1");
/* death-counter */
pl.deaths++;
forceinfokey(pl, "*deaths", ftos(pl.deaths));
Sound_Precache("op4ctf_bm.flag_taken");
Sound_Precache("op4ctf_bm.flag_capture");
/* update score-counter */
if (pl.flags & FL_CLIENT || pl.flags & FL_MONSTER)
if (g_dmg_eAttacker.flags & FL_CLIENT) {
if (pl == g_dmg_eAttacker)
g_dmg_eAttacker.frags--;
else
g_dmg_eAttacker.frags++;
}
Sound_Precache("op4ctf_op4.flag_taken");
Sound_Precache("op4ctf_op4.flag_capture");
}
/* in DM we only care about the frags */
if (cvar("mp_fraglimit"))
if (g_dmg_eAttacker.frags >= cvar("mp_fraglimit")) {
IntermissionStart();
}
void
OP4CTFRules::PlayerConnect(NSClientPlayer pp)
{
super::PlayerConnect(pp);
pp.frags = 0;
forceinfokey(pp, "*deaths", "0");
forceinfokey(pp, "*score", "0");
forceinfokey(pp, "*icon1", "");
forceinfokey(pp, "*icon2", "");
}
weaponbox_spawn(pl);
pl.movetype = MOVETYPE_NONE;
pl.solid = SOLID_NOT;
pl.takedamage = DAMAGE_NO;
pl.gflags &= ~GF_FLASHLIGHT;
pl.armor = pl.activeweapon = pl.g_items = 0;
pl.think = PutClientInServer;
pl.nextthink = time + 4.0f;
Sound_Play(pl, CHAN_AUTO, "player.die");
if (pl.health < -50) {
pl.health = 0;
FX_GibHuman(pl.origin, vectoangles(pl.origin - g_dmg_eAttacker.origin), g_dmg_iDamage * 2.0f);
return;
}
pl.health = 0;
void
OP4CTFRules::PlayerDisconnect(NSClientPlayer pl)
{
DropFlag(pl);
super::PlayerDisconnect(pl);
}
void
@ -86,48 +63,243 @@ OP4CTFRules::PlayerSpawn(NSClientPlayer pp)
{
player pl = (player)pp;
/* this is where the mods want to deviate */
entity spot;
/* not in a team yet, force them into spectator */
if (pl.team == 0) {
pl.MakeTempSpectator(); /* replace this with a non-spectator ghost */
Spawn_ObserverCam(pl);
return;
}
pl.classname = "player";
CharacterSpawn(pp, pl.m_oldModel);
}
bool
OP4CTFRules::IsTeamplay(void)
{
return true;
}
void CSEv_TeamJoin_f(float);
void CSEv_ClassJoin_f(float);
bool
OP4CTFRules::ConsoleCommand(NSClientPlayer pp, string cmd)
{
static void OP4CTFRules_BotJoin(void) {
float tag = (random() < 0.5) ? 1 : 2;
CSEv_TeamJoin_f(tag);
CSEv_ClassJoin_f(tag == 1 ? 0 : 13);
}
tokenize(cmd);
switch (argv(0)) {
case "bot_add":
entity bot_ent = Bot_AddQuick();
if (bot_ent) {
bot_ent.think = OP4CTFRules_BotJoin;
bot_ent.nextthink = time;
}
break;
default:
return (false);
}
return (true);
}
void
OP4CTFRules::CharacterSpawn(NSClientPlayer playerEnt, string playerModel)
{
player pl = (player)playerEnt;
pl.m_oldModel = playerModel;
pl.health = pl.max_health = 100;
pl.takedamage = DAMAGE_YES;
pl.solid = SOLID_SLIDEBOX;
pl.movetype = MOVETYPE_WALK;
pl.SetTakedamage(DAMAGE_YES);
pl.SetSolid(SOLID_SLIDEBOX);
pl.SetMovetype(MOVETYPE_WALK);
pl.SetModel(playerModel);
pl.SetSize(VEC_HULL_MIN, VEC_HULL_MAX);
pl.ClearVelocity();
pl.flags = FL_CLIENT;
pl.viewzoom = 1.0;
pl.model = "models/player.mdl";
string mymodel = infokey(pl, "model");
if (mymodel) {
mymodel = sprintf("models/player/%s/%s.mdl", mymodel, mymodel);
if (whichpack(mymodel)) {
pl.model = mymodel;
}
}
setmodel(pl, pl.model);
setsize(pl, VEC_HULL_MIN, VEC_HULL_MAX);
pl.velocity = [0,0,0];
pl.gravity = __NULL__;
pl.frame = 1;
pl.SendFlags = UPDATE_ALL;
pl.customphysics = Empty;
pl.iBleeds = TRUE;
forceinfokey(pl, "*spec", "0");
forceinfokey(pl, "*deaths", ftos(pl.deaths));
pl.SetInfoKey("*spec", "0");
pl.SetInfoKey("*dead", "0");
LevelNewParms();
LevelDecodeParms(pl);
/* give inventory */
pl.g_items = ITEM_CROWBAR | ITEM_GLOCK | ITEM_SUIT;
pl.activeweapon = WEAPON_GLOCK;
pl.glock_mag = 18;
pl.ammo_9mm = 44;
spot = Spawn_SelectRandom("info_player_deathmatch");
setorigin(pl, spot.origin);
pl.angles = spot.angles;
entity spot = Spawn_SelectRandom(strcat("info_ctfspawn_", ftos(pl.team)));
pl.Transport(spot.origin, spot.angles);
Weapons_RefreshAmmo(pl);
Client_FixAngle(pl, pl.angles);
}
void
OP4CTFRules::CaptureFlag(NSClientPlayer pp)
{
player pl = (player)pp;
NSEntity enemyFlag;
string flagName;
string teamScore;
string captureSound;
/* detach flag */
pl.g_items &= ~ITEM_GOALITEM;
pl.flags &= ~FL_GOALITEM;
pl.flagmodel = 0;
pl.score += 10;
forceinfokey(pl, "*icon1", "");
if (pl.team == 1) {
flagName = "info_ctfflag_2";
teamScore = "teamscore_1";
captureSound = "op4ctf_bm.flag_capture";
} else {
flagName = "info_ctfflag_1";
teamScore = "teamscore_2";
captureSound = "op4ctf_op4.flag_capture";
}
/* increment score */
forceinfokey(world, teamScore, sprintf("%d", serverkeyfloat(teamScore) + 1));
enemyFlag = (NSEntity)find(world, ::classname, flagName);
if (!enemyFlag) {
error("What the hell? There's no flag back there!");
return;
}
enemyFlag.StartSoundDef(captureSound, CHAN_ITEM, true);
enemyFlag.Respawn();
}
void
OP4CTFRules::PlayerDeath(NSClientPlayer pp)
{
DropFlag(pp);
super::PlayerDeath(pp);
}
void
OP4CTFRules::DropFlag(NSClientPlayer pp)
{
player pl = (player)pp;
item_ctfflag targetFlag;
string flagName;
/* skip normal players */
if (!(pl.g_items & ITEM_GOALITEM))
return;
if (pl.team == 1) {
flagName = "info_ctfflag_2";
} else {
flagName = "info_ctfflag_1";
}
for (entity e = world; (e = find(e, ::classname, flagName));) {
targetFlag = (item_ctfflag)e;
/* item is still pick-upable */
if (targetFlag.GetSolid() != SOLID_NOT) {
print("the item is not picked up. \n");
continue;
}
/* that's us, yup */
if (targetFlag.m_eActivator == pl) {
targetFlag.FlagDrop(pl);
return;
}
}
print("^1WARNING: ^7Player marked as having impossible goal-item\n");
}
void
CSEv_TeamJoin_f(float teamChoice)
{
self.team = teamChoice;
forceinfokey(self, "*team", ftos(teamChoice));
/* they'll become spectator */
if (teamChoice == 0) {
OP4CTFRules rule = (OP4CTFRules)g_grMode;
rule.PlayerSpawn((NSClientPlayer)self);
}
}
void
CSEv_ClassJoin_f(float classSelection)
{
OP4CTFRules rule = (OP4CTFRules)g_grMode;
string playerModel = "";
player pl = (player)self;
/* random black mesa char */
if (classSelection == 0)
classSelection = floor(random(1, 7));
/* random opfor char */
if (classSelection == 13)
classSelection = floor(random(7, 13));
switch (classSelection) {
/* black mesa */
case 1:
playerModel = "models/player/ctf_barney/ctf_barney.mdl";
break;
case 2:
playerModel = "models/player/cl_suit/cl_suit.mdl";
break;
case 3:
playerModel = "models/player/ctf_gina/ctf_gina.mdl";
break;
case 4:
playerModel = "models/player/ctf_gordon/ctf_gordon.mdl";
break;
case 5:
playerModel = "models/player/otis/otis.mdl";
break;
case 6:
playerModel = "models/player/ctf_scientist/ctf_scientist.mdl";
break;
/* opfor */
case 7:
playerModel = "models/player/beret/beret.mdl";
break;
case 8:
playerModel = "models/player/drill/drill.mdl";
break;
case 9:
playerModel = "models/player/grunt/grunt.mdl";
break;
case 10:
playerModel = "models/player/recruit/recruit.mdl";
break;
case 11:
playerModel = "models/player/shephard/shephard.mdl";
break;
case 12:
playerModel = "models/player/tower/tower.mdl";
break;
}
if (playerModel == "") {
error("invalid model selection, erroring out");
}
/* if we're alive, kill them (we need to drop the flag anyhow */
if (pl.IsAlive()) {
pl.m_oldModel = playerModel;
rule.PlayerDeath(pl);
} else {
rule.CharacterSpawn((NSClientPlayer)self, playerModel);
}
}

View File

@ -0,0 +1,66 @@
/*
* Copyright (c) 2023 Marco Cawthorne <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED info_ctfdetect (0 0.8 0.8) (-8 -8 -8) (8 8 8)
# OVERVIEW
CTF Map Parameters
When detected, will enable Capture The Flag on the map that it's on.
# KEYS
- "basedefenddist" : Base Defend Distance, default is "30"
- "defendcarriertime" : Defend Carrier Time, default is "192"
- "captureassisttime" : Capture Assist Time, default is "10"
- "poweruprespawntime" : Powerup Respawn Time, default is "30"
- "score_icon_namebm" : Non-Flag Black Mesa icon, default is "item_ctfscorebm"
- "score_icon_nameof" : Non-Flag Opposing Force icon, default is "item_ctfscoreof"
- "map_score_max" : Maximum Map Team Score, default is "0"
# TRIVIA
This entity was introduced in Half-Life: Opposing Force (1999)
*/
class info_ctfdetect:NSEntity
{
public:
void info_ctfdetect(void);
virtual void SpawnKey(string, string);
private:
string m_strScoreIconBM;
string m_strScoreIconOF;
};
info_ctfdetect g_ctf;
void
info_ctfdetect::info_ctfdetect(void)
{
g_ctf = this;
}
void
info_ctfdetect::SpawnKey(string strKey, string strValue)
{
switch (strKey) {
case "score_icon_namebm":
m_strScoreIconBM = ReadString(strValue);
break;
case "score_icon_nameof":
m_strScoreIconOF = ReadString(strValue);
break;
}
}

View File

@ -0,0 +1,62 @@
/*
* Copyright (c) 2023 Marco Cawthorne <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED info_ctfspawn (0 0.8 0.8) (-16 -16 -36) (16 16 36)
# OVERVIEW
CTF Player Start
# KEYS
- "team_no" : Team
# TRIVIA
This entity was introduced in Half-Life: Opposing Force (1999)
*/
class
info_ctfspawn:NSEntity
{
void info_ctfspawn(void);
virtual void Respawn(void);
virtual void SpawnKey(string, string);
};
void
info_ctfspawn::info_ctfspawn(void)
{
}
void
info_ctfspawn::SpawnKey(string strKey, string strValue)
{
switch (strKey) {
case "team_no":
team = ReadFloat(strValue);
break;
default:
super::SpawnKey(strKey, strValue);
}
}
void
info_ctfspawn::Respawn(void)
{
SetOrigin(GetSpawnOrigin());
SetSolid(SOLID_NOT);
classname = strcat("info_ctfspawn_", ftos(team));
}

View File

@ -0,0 +1,26 @@
/*
* Copyright (c) 2023 Marco Cawthorne <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED info_ctfspawn_powerup (0 0.8 0.8) (-16 -16 0) (16 16 36)
# OVERVIEW
CTF Powerup Spawn
# KEYS
- "team_no" : Team
# TRIVIA
This entity was introduced in Half-Life: Opposing Force (1999)
*/

View File

@ -0,0 +1,52 @@
/*
* Copyright (c) 2023 Marco Cawthorne <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED item_ctfaccelerator (0 0.8 0.8) (-16 -16 0) (16 16 36) x x CTFITEM_RANDOM
# OVERVIEW
CTF Double Damage Powerup
# KEYS
- "team_no" : Team
# TRIVIA
This entity was introduced in Half-Life: Opposing Force (1999)
-------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY --------
model="models/w_accelerator.mdl"
*/
class item_ctfaccelerator:OP4CTFItem
{
void item_ctfaccelerator(void);
virtual void Spawned(void);
};
void
item_ctfaccelerator::item_ctfaccelerator(void)
{
}
void
item_ctfaccelerator::Spawned(void)
{
m_iItemID = ITEM_CTF_DEATH;
m_strScoreIcon = "score_ctfaccel";
m_vecScoreColor = [1,0,0];
model = "models/w_accelerator.mdl";
super::Spawned();
}

View File

@ -0,0 +1,54 @@
/*
* Copyright (c) 2023 Marco Cawthorne <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED item_ctfbackpack (0 0.8 0.8) (-16 -16 0) (16 16 36) x x CTFITEM_RANDOM
# OVERVIEW
CTF Backpack Powerup
# KEYS
- "team_no" : Team
# TRIVIA
This entity was introduced in Half-Life: Opposing Force (1999)
-------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY --------
model="models/w_backpack.mdl"
*/
class item_ctfbackpack:OP4CTFItem
{
void item_ctfbackpack(void);
virtual void Spawned(void);
};
void
item_ctfbackpack::item_ctfbackpack(void)
{
}
void
item_ctfbackpack::Spawned(void)
{
m_iItemID = ITEM_CTF_BACKPACK;
m_strScoreIcon = "score_ctfbpack";
m_vecScoreColor = [1,1,0];
model = "models/w_backpack.mdl";
super::Spawned();
Sound_Precache("op4ctf_backpack.refresh");
}

View File

@ -0,0 +1,56 @@
/*
* Copyright (c) 2023 Marco Cawthorne <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED item_ctfbase (0 0.8 0.8) (-16 -16 0) (16 16 72)
# OVERVIEW
CTF Capture-Point/Goal
# KEYS
- "model" : Model path for this item
- "skin" : Skin to use
- "goal_no" : Team
- "goal_min" : Minimum Bounding Box
- "goal_max" : Maximum Bounding Box
# TRIVIA
This entity was introduced in Half-Life: Opposing Force (1999)
-------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY --------
model="models/civ_stand.mdl"
*/
class item_ctfbase:OP4CTFItem
{
void item_ctfbase(void);
virtual void Respawn(void);
};
void
item_ctfbase::item_ctfbase(void)
{
}
void
item_ctfbase::Respawn(void)
{
SetOrigin(GetSpawnOrigin());
SetModel(GetSpawnModel());
SetSize([-16, -16, 0], [16, 16, 72]);
DropToFloor();
botinfo = BOTINFO_TEAM_GOALCAPTURE;
}

158
src/server/item_ctfflag.qc Normal file
View File

@ -0,0 +1,158 @@
/*
* Copyright (c) 2023 Marco Cawthorne <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED item_ctfflag (0 0.8 0.8) (-16 -16 0) (16 16 72)
# OVERVIEW
CTF Flag/Goal-Item
# KEYS
- "model" : Model path for this item
- "skin" : Skin to use
- "goal_no" : Team
- "goal_min" : Minimum Bounding Box
- "goal_max" : Maximum Bounding Box
# TRIVIA
This entity was introduced in Half-Life: Opposing Force (1999)
-------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY --------
model="models/flag.mdl"
*/
class item_ctfflag:OP4CTFItem
{
entity m_eActivator;
void item_ctfflag(void);
virtual void Respawn(void);
virtual void Touch(entity);
nonvirtual void FlagTaken(void);
nonvirtual void FlagDrop(NSClientPlayer);
nonvirtual void FlagReturns(void);
};
void
item_ctfflag::item_ctfflag(void)
{
m_eActivator = __NULL__;
}
void
item_ctfflag::Respawn(void)
{
SetOrigin(GetSpawnOrigin());
SetModel(GetSpawnModel());
SetSize([-16, -16, 0], [16, 16, 72]);
SetSolid(SOLID_TRIGGER);
DropToFloor();
SetFrame(4);
botinfo = BOTINFO_TEAM_GOALITEM;
classname = strcat("info_ctfflag_", ftos(m_iTeamID));
forceinfokey(world, strcat("ctfflag_", ftos(m_iTeamID)), ftos(CTFFLAG_IDLE));
m_eActivator = __NULL__;
team = m_iTeamID;
}
void
item_ctfflag::Touch(entity eToucher)
{
player pl = (player)eToucher;
if (!(eToucher.flags & FL_CLIENT))
return;
if (eToucher.team == 0)
return;
if (eToucher.team == m_iTeamID) {
if (m_eActivator == __NULL__) /* only on flags that haven't been dropped */
if (pl.g_items & ITEM_GOALITEM) {
OP4CTFRules rule = (OP4CTFRules)g_grMode;
rule.CaptureFlag((NSClientPlayer)pl);
}
return;
}
m_eActivator = pl;
pl.g_items |= ITEM_GOALITEM;
pl.flags |= FL_GOALITEM;
forceinfokey(pl, "*icon1", "score_flag");
if (eToucher.team == 1) {
forceinfokey(pl, "*icon1_r", "0");
forceinfokey(pl, "*icon1_g", "1");
forceinfokey(pl, "*icon1_b", "0");
} else {
forceinfokey(pl, "*icon1_r", "1");
forceinfokey(pl, "*icon1_g", "1");
forceinfokey(pl, "*icon1_b", "0");
}
pl.flagmodel = GetModelindex();
pl.flagskin = GetSkin();
pl.score += 1;
FlagTaken();
}
void
item_ctfflag::FlagTaken(void)
{
if (m_iTeamID == 1)
StartSoundDef("op4ctf_bm.flag_taken", CHAN_ITEM, true);
else
StartSoundDef("op4ctf_op4.flag_taken", CHAN_ITEM, true);
forceinfokey(world, strcat("ctfflag_", ftos(m_iTeamID)), ftos(CTFFLAG_TAKEN));
Disappear();
}
void
item_ctfflag::FlagDrop(NSClientPlayer pp)
{
player pl = (player)pp;
/* make it available again, put it exactly where we died */
Respawn();
SetOrigin(pl.origin);
DropToFloor();
SetFrame(0);
/* untag it from the player */
pl.g_items &= ~ITEM_GOALITEM;
pl.flagmodel = 0;
m_eActivator = pp; /* to mark that who this was dropped by */
forceinfokey(world, strcat("ctfflag_", ftos(m_iTeamID)), ftos(CTFFlAG_MISSING));
/* return after N secs */
ScheduleThink(FlagReturns, 30.0f);
}
void
item_ctfflag::FlagReturns(void)
{
Respawn();
/*
for (entity e = world; (e = find(e, ::classname, "player")); ) {
if (e.team == m_iTeamUses)
env_message_single(e, m_returnTeam);
else if (e.team == m_iTeamOwner)
env_message_single(e, m_returnOwner);
}
*/
}

View File

@ -0,0 +1,52 @@
/*
* Copyright (c) 2023 Marco Cawthorne <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED item_ctflongjump (0 0.8 0.8) (-16 -16 0) (16 16 36) x x CTFITEM_RANDOM
# OVERVIEW
CTF Longjump Module Powerup
# KEYS
- "team_no" : Team
# TRIVIA
This entity was introduced in Half-Life: Opposing Force (1999)
-------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY --------
model="models/w_jumppack.mdl"
*/
class item_ctflongjump:OP4CTFItem
{
void item_ctflongjump(void);
virtual void Spawned(void);
};
void
item_ctflongjump::item_ctflongjump(void)
{
}
void
item_ctflongjump::Spawned(void)
{
m_iItemID = ITEM_CTF_JUMPPACK;
m_strScoreIcon = "score_ctfljump";
m_vecScoreColor = [1,0.5,0];
model = "models/w_jumppack.mdl";
super::Spawned();
}

View File

@ -0,0 +1,53 @@
/*
* Copyright (c) 2023 Marco Cawthorne <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED item_ctfportablehev (0 0.8 0.8) (-16 -16 0) (16 16 36) x x CTFITEM_RANDOM
# OVERVIEW
CTF HEV Charger Powerup
# KEYS
- "team_no" : Team
# TRIVIA
This entity was introduced in Half-Life: Opposing Force (1999)
-------- MODEL FOR RADIANT ONLY - DO NOT SET THIS AS A KEY --------
model="models/w_porthev.mdl"
*/
class item_ctfportablehev:OP4CTFItem
{
void item_ctfportablehev(void);
virtual void Spawned(void);
};
void
item_ctfportablehev::item_ctfportablehev(void)
{
}
void
item_ctfportablehev::Spawned(void)
{
m_iItemID = ITEM_CTF_SHIELD;
m_strScoreIcon = "score_ctfphev";
m_vecScoreColor = [0.25,0.25,1];
model = "models/w_porthev.mdl";
super::Spawned();
}

View File

@ -0,0 +1,49 @@
/*
* Copyright (c) 2023 Marco Cawthorne <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED item_ctfregeneration (0 0.8 0.8) (-16 -16 0) (16 16 36) x x CTFITEM_RANDOM
# OVERVIEW
CTF Health-Regen Powerup
# KEYS
- "team_no" : Team
# TRIVIA
This entity was introduced in Half-Life: Opposing Force (1999)
*/
class item_ctfregeneration:OP4CTFItem
{
void item_ctfregeneration(void);
virtual void Spawned(void);
};
void
item_ctfregeneration::item_ctfregeneration(void)
{
}
void
item_ctfregeneration::Spawned(void)
{
m_iItemID = ITEM_CTF_HEALTH;
m_strScoreIcon = "score_ctfregen";
m_vecScoreColor = [0, 1, 0];
model = "models/w_health.mdl";
super::Spawned();
}

View File

@ -20,40 +20,7 @@ defs.h
../shared/include.src
../../../valve/src/server/monster_apache.qc
../../../valve/src/server/monster_alien_controller.qc
../../../valve/src/server/monster_alien_grunt.qc
../../../valve/src/server/monster_alien_slave.qc
../../../valve/src/server/monster_barnacle.qc
../../../valve/src/server/monster_barney.qc
../../../valve/src/server/monster_barney_dead.qc
../../../valve/src/server/monster_bigmomma.qc
../../../valve/src/server/monster_bloater.qc
../../../valve/src/server/monster_bullchicken.qc
../../../valve/src/server/monster_cockroach.qc
../../../valve/src/server/monster_flyer_flock.qc
../../../valve/src/server/monster_gargantua.qc
../../../valve/src/server/monster_gman.qc
../../../valve/src/server/monster_headcrab.qc
../../../valve/src/server/monster_babycrab.qc
../../../valve/src/server/monster_hevsuit_dead.qc
../../../valve/src/server/monster_houndeye.qc
../../../valve/src/server/monster_human_grunt.qc
../../../valve/src/server/monster_hgrunt_dead.qc
../../../valve/src/server/monster_human_assassin.qc
../../../valve/src/server/monster_ichthyosaur.qc
../../../valve/src/server/monster_leech.qc
../../../valve/src/server/monster_miniturret.qc
../../../valve/src/server/monster_nihilanth.qc
../../../valve/src/server/monster_osprey.qc
../../../valve/src/server/monster_rat.qc
../../../valve/src/server/monster_scientist_dead.qc
../../../valve/src/server/monster_sitting_scientist.qc
../../../valve/src/server/monster_scientist.qc
../../../valve/src/server/monster_sentry.qc
../../../valve/src/server/monster_tentacle.qc
../../../valve/src/server/monster_turret.qc
../../../valve/src/server/monster_zombie.qc
monster_drillsergeant.qc
monster_recruit.qc
@ -73,6 +40,19 @@ monster_recruit.qc
../../../valve/src/server/ammo.qc
ammo_op4.qc
ctfitem.qc
item_ctfflag.qc
item_ctfbase.qc
info_ctfspawn.qc
info_ctfdetect.qc
item_ctflongjump.qc
item_ctfportablehev.qc
item_ctfregeneration.qc
item_ctfaccelerator.qc
item_ctfbackpack.qc
info_ctfspawn_powerup.qc
trigger_ctfgeneric.qc
../../../src/botlib/include.src
gamerules.qc

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2016-2020 Marco Cawthorne <marco@icculus.org>
* Copyright (c) 2016-2023 Marco Cawthorne <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@ -16,11 +16,18 @@
void
Game_InitRules(void)
{
{
forceinfokey(world, "ctf", "0");
if (cvar("sv_playerslots") == 1 || cvar("coop") == 1) {
g_grMode = spawn(HLSingleplayerRules);
} else {
g_grMode = spawn(HLMultiplayerRules);
/* we have an info_ctfdetect entity */
if (substring(mapname, 0, 7) == "op4ctf_") {
g_grMode = spawn(OP4CTFRules);
forceinfokey(world, "ctf", "1");
} else
g_grMode = spawn(HLMultiplayerRules);
}
}

View File

@ -0,0 +1,30 @@
/*
* Copyright (c) 2023 Marco Cawthorne <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED trigger_ctfgeneric (0 0.8 0.8) ?
# OVERVIEW
Generic CTF trigger volume
# KEYS
- "team_no" : Team
- "score" : Player score
- "team_score" : Team score
- "trigger_delay" : Reactivation delay
- "triggerstate" : Trigger state
# TRIVIA
This entity was introduced in Half-Life: Opposing Force (1999)
*/

View File

@ -10,15 +10,11 @@ player.qc
../../../valve/src/shared/fx_blood.qc
../../../valve/src/shared/fx_gaussbeam.qc
../../../valve/src/shared/fx_breakmodel.qc
../../../valve/src/shared/fx_explosion.qc
../../../valve/src/shared/fx_gibhuman.qc
../../../valve/src/shared/fx_spark.qc
../../../valve/src/shared/fx_impact.qc
../../../valve/src/shared/fx_corpse.qc
items.h
weapons.h
player_ctf.qc
../../../valve/src/shared/w_crossbow.qc
../../../valve/src/shared/w_crowbar.qc
../../../valve/src/shared/w_egon.qc

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2016-2020 Marco Cawthorne <marco@icculus.org>
* Copyright (c) 2016-2023 Marco Cawthorne <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@ -43,9 +43,17 @@
#define ITEM_SHOCKRIFLE 0x01000000i
#define ITEM_SPORELAUNCHER 0x02000000i
#define ITEM_UNUSED27 0x04000000i
#define ITEM_UNUSED28 0x08000000i
#define ITEM_UNUSED29 0x10000000i
#define ITEM_UNUSED30 0x20000000i
#define ITEM_UNUSED31 0x40000000i
#define ITEM_UNUSED32 0x80000000i
#define ITEM_CTF_JUMPPACK 0x04000000i
#define ITEM_CTF_SHIELD 0x08000000i
#define ITEM_CTF_HEALTH 0x10000000i
#define ITEM_CTF_DEATH 0x20000000i
#define ITEM_CTF_BACKPACK 0x40000000i
#define ITEM_GOALITEM 0x80000000i
typedef enum
{
CTFFLAG_IDLE = 0,
CTFFLAG_TAKEN,
CTFFlAG_MISSING
} ctfflag_state;

View File

@ -14,88 +14,7 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifdef CLIENT
/* Here's a list of bone names that we are aware of on HL player models.
Usually we'd use skeletalobjects to share the same skeleton/anim with
another model - but because FTEQW does not support that for HLMDL we
are forced to manually position the bones of our attachnment
by iterating over them and manually setting their position in 3D-space.
*/
string g_pbones[] =
{
"Bip01",
"Bip01 Footsteps",
"Bip01 Pelvis",
"Bip01 L Leg",
"Bip01 L Leg1",
"Bip01 L Foot",
"Bip01 L Toe0",
"Bip01 L Toe01",
"Bip01 L Toe02",
"Dummy16",
"Bip01 R Leg",
"Bip01 R Leg1",
"Bip01 R Foot",
"Bip01 R Toe0",
"Bip01 R Toe01",
"Bip01 R Toe02",
"Dummy11",
"Bip01 Spine",
"Bip01 Spine1",
"Bip01 Spine2",
"Bip01 Spine3",
"Bip01 Neck",
"Bip01 Head",
"Dummy21",
"Dummy08",
"Bone02",
"Bone03",
"Bone04",
"Dummy05",
"Bone09",
"Bone10",
"Dummy04",
"Bone05",
"Bone06",
"Dummy03",
"Bone07",
"Bone08",
"Dummy09",
"Bone11",
"Bone12",
"Dummy10",
"Bone13",
"Bone14",
"Bone15",
"Bip01 L Arm",
"Bip01 L Arm1",
"Bip01 L Arm2",
"Bip01 L Hand",
"Bip01 L Finger0",
"Bip01 L Finger01",
"Bip01 L Finger02",
"Dummy06",
"Bip01 L Finger1",
"Bip01 L Finger11",
"Bip01 L Finger12",
"Dummy07",
"Bip01 R Arm",
"Bip01 R Arm1",
"Bip01 R Arm2",
"Bip01 R Hand",
"Bip01 R Finger0",
"Bip01 R Finger01",
"Bip01 R Finger02",
"Dummy01",
"Bip01 R Finger1",
"Bip01 R Finger11",
"Bip01 R Finger12",
"Dummy02",
"Box02",
"Bone08",
"Bone15"
};
#endif
#include "../../../valve/src/shared/skeleton.h"
/* all potential SendFlags bits we can possibly send */
enumflags
@ -105,7 +24,7 @@ enumflags
PLAYER_AMMO1,
PLAYER_AMMO2,
PLAYER_AMMO3,
PLAYER_UNUSED5,
PLAYER_FLAG,
PLAYER_UNUSED6,
PLAYER_UNUSED7
};
@ -163,18 +82,26 @@ class player:NSClientPlayer
PREDICTED_INT(mode_sporelauncher)
PREDICTED_INT(mode_m249)
PREDICTED_FLOAT(flagmodel)
PREDICTED_FLOAT(flagskin)
virtual void(void) Physics_Jump;
virtual void UpdatePlayerAnimation(float);
#ifdef CLIENT
NSRenderableEntity m_eFlag;
virtual void UpdatePlayerAttachments(bool);
virtual void(float,float) ReceiveEntity;
virtual void(void) PredictPreFrame;
virtual void(void) PredictPostFrame;
virtual void UpdateAliveCam(void);
virtual void OnRemoveEntity(void);
#else
entity hook;
float m_flPickUpTime;
virtual void(void) EvaluateEntity;
virtual float(entity, float) SendEntity;
nonvirtual void PowerupThink(void);
#endif
};
@ -232,29 +159,9 @@ string Weapons_GetPlayermodel(player, int);
void
player::UpdatePlayerAttachments(bool visible)
{
/* draw the flashlight */
if (gflags & GF_FLASHLIGHT) {
vector src;
vector ang;
if (entnum != player_localentnum) {
src = origin + view_ofs;
ang = v_angle;
} else {
src = pSeat->m_vecPredictedOrigin + [0,0,-8];
ang = view_angles;
}
makevectors(ang);
traceline(src, src + (v_forward * 8096), MOVE_NORMAL, this);
if (serverkeyfloat("*bspversion") == BSPVER_HL) {
dynamiclight_add(trace_endpos + (v_forward * -2), 128, [1,1,1]);
} else {
float p = dynamiclight_add(src, 512, [1,1,1], 0, "textures/flashlight");
dynamiclight_set(p, LFIELD_ANGLES, ang);
dynamiclight_set(p, LFIELD_FLAGS, 3);
}
if (m_eFlag != world) {
m_eFlag.SetOrigin(origin);
m_eFlag.SetAngles([0, angles[1], 0]);
}
/* FIXME: this needs to be incorporated and simplified, now that we can handle it all in-class */
@ -310,96 +217,111 @@ player::UpdatePlayerAttachments(bool visible)
void Weapons_AmmoUpdate(entity);
void HUD_AmmoNotify_Check(player pl);
void HUD_ItemNotify_Check(player pl);
void
player::OnRemoveEntity(void)
{
super::OnRemoveEntity();
if (m_eFlag) {
m_eFlag.Destroy();
}
}
/*
=================
player::ReceiveEntity
=================
*/
void
player::ReceiveEntity(float new, float fl)
player::ReceiveEntity(float new, float flChanged)
{
NSClientPlayer::ReceiveEntity(new, fl);
/* the generic client attributes */
NSClientPlayer::ReceiveEntity(new, flChanged);
/* animation */
if (fl & PLAYER_TOPFRAME) {
anim_top = readbyte();
anim_top_time = readfloat();
anim_top_delay = readfloat();
}
if (fl & PLAYER_BOTTOMFRAME) {
anim_bottom = readbyte();
anim_bottom_time = readfloat();
}
READENTITY_BYTE(anim_top, PLAYER_TOPFRAME)
READENTITY_FLOAT(anim_top_time, PLAYER_TOPFRAME)
READENTITY_FLOAT(anim_top_delay, PLAYER_TOPFRAME)
READENTITY_BYTE(anim_bottom, PLAYER_BOTTOMFRAME)
READENTITY_FLOAT(anim_bottom_time, PLAYER_BOTTOMFRAME)
if (fl & PLAYER_AMMO1) {
glock_mag = readbyte();
mp5_mag = readbyte();
python_mag = readbyte();
shotgun_mag = readbyte();
crossbow_mag = readbyte();
rpg_mag = readbyte();
satchel_chg = readbyte();
READENTITY_BYTE(glock_mag, PLAYER_AMMO1)
READENTITY_BYTE(mp5_mag, PLAYER_AMMO1)
READENTITY_BYTE(python_mag, PLAYER_AMMO1)
READENTITY_BYTE(shotgun_mag, PLAYER_AMMO1)
READENTITY_BYTE(crossbow_mag, PLAYER_AMMO1)
READENTITY_BYTE(rpg_mag, PLAYER_AMMO1)
READENTITY_BYTE(satchel_chg, PLAYER_AMMO1)
/* gearbox */
eagle_mag = readbyte();
sniper_mag = readbyte();
m249_mag = readbyte();
sporelauncher_mag = readbyte();
}
if (fl & PLAYER_AMMO2) {
ammo_9mm = readbyte();
ammo_357 = readbyte();
ammo_buckshot = readbyte();
ammo_bolt = readbyte();
ammo_rocket = readbyte();
ammo_uranium = readbyte();
ammo_handgrenade = readbyte();
ammo_satchel = readbyte();
ammo_tripmine = readbyte();
ammo_snark = readbyte();
ammo_hornet = readbyte();
READENTITY_BYTE(ammo_9mm, PLAYER_AMMO2)
READENTITY_BYTE(ammo_357, PLAYER_AMMO2)
READENTITY_BYTE(ammo_buckshot, PLAYER_AMMO2)
READENTITY_BYTE(ammo_bolt, PLAYER_AMMO2)
READENTITY_BYTE(ammo_rocket, PLAYER_AMMO2)
READENTITY_BYTE(ammo_uranium, PLAYER_AMMO2)
READENTITY_BYTE(ammo_handgrenade, PLAYER_AMMO2)
READENTITY_BYTE(ammo_satchel, PLAYER_AMMO2)
READENTITY_BYTE(ammo_tripmine, PLAYER_AMMO2)
READENTITY_BYTE(ammo_snark, PLAYER_AMMO2)
READENTITY_BYTE(ammo_hornet, PLAYER_AMMO2)
/* gearbox */
ammo_556 = readbyte();
ammo_762 = readbyte();
ammo_spore = readbyte();
ammo_shock = readbyte();
ammo_penguin = readbyte();
}
READENTITY_BYTE(ammo_m203_grenade, PLAYER_AMMO3)
READENTITY_BYTE(ammo_gauss_volume, PLAYER_AMMO3)
READENTITY_BYTE(ammo_rpg_state, PLAYER_AMMO3)
READENTITY_BYTE(mode_tempstate, PLAYER_AMMO3)
if (fl & PLAYER_AMMO3) {
ammo_m203_grenade = readbyte();
ammo_gauss_volume = readbyte();
ammo_rpg_state = readbyte();
mode_tempstate = readbyte();
/* gearbox */
READENTITY_BYTE(eagle_mag, PLAYER_AMMO1)
READENTITY_BYTE(sniper_mag, PLAYER_AMMO1)
READENTITY_BYTE(m249_mag, PLAYER_AMMO1)
READENTITY_BYTE(sporelauncher_mag, PLAYER_AMMO1)
/* gearbox */
mode_displacer = readbyte();
mode_eagle = readbyte();
mode_wrench = readbyte();
mode_sporelauncher = readbyte();
mode_m249 = readbyte();
}
READENTITY_BYTE(ammo_556, PLAYER_AMMO2)
READENTITY_BYTE(ammo_762, PLAYER_AMMO2)
READENTITY_BYTE(ammo_spore, PLAYER_AMMO2)
READENTITY_BYTE(ammo_shock, PLAYER_AMMO2)
READENTITY_BYTE(ammo_penguin, PLAYER_AMMO2)
READENTITY_BYTE(mode_displacer, PLAYER_AMMO3)
READENTITY_BYTE(mode_eagle, PLAYER_AMMO3)
READENTITY_BYTE(mode_wrench, PLAYER_AMMO3)
READENTITY_BYTE(mode_sporelauncher, PLAYER_AMMO3)
READENTITY_BYTE(mode_m249, PLAYER_AMMO3)
READENTITY_FLOAT(flagmodel, PLAYER_FLAG)
READENTITY_BYTE(flagskin, PLAYER_FLAG)
setorigin(this, origin);
/* add/remove flag model */
if (flagmodel != 0) {
if (!m_eFlag)
m_eFlag = spawn(NSRenderableEntity);
m_eFlag.SetModelindex(flagmodel);
m_eFlag.SetSkin(flagskin);
m_eFlag.SetFrame(2);
} else if (m_eFlag) {
m_eFlag.Destroy();
remove(m_eFlag);
m_eFlag = 0;
}
/* these only concern the current player */
CSQC_UpdateSeat();
if (this != pSeat->m_ePlayer)
return;
/* do not notify us of updates when spawning initially */
if (fl == UPDATE_ALL)
if (flChanged == UPDATE_ALL)
PredictPreFrame();
if (fl & PLAYER_AMMO1 || fl & PLAYER_AMMO2 || fl & PLAYER_AMMO3) {
if (flChanged & PLAYER_AMMO1 || flChanged & PLAYER_AMMO2 || flChanged & PLAYER_AMMO3) {
Weapons_AmmoUpdate(this);
HUD_AmmoNotify_Check(this);
}
if (fl & PLAYER_ITEMS || fl & PLAYER_HEALTH)
if (flChanged & PLAYER_ITEMS || flChanged & PLAYER_HEALTH)
HUD_ItemNotify_Check(this);
}
@ -462,6 +384,8 @@ player::PredictPreFrame(void)
SAVE_STATE(mode_wrench)
SAVE_STATE(mode_sporelauncher)
SAVE_STATE(mode_m249)
SAVE_STATE(flagmodel)
SAVE_STATE(flagskin)
}
/*
@ -522,144 +446,70 @@ player::PredictPostFrame(void)
ROLL_BACK(mode_wrench)
ROLL_BACK(mode_sporelauncher)
ROLL_BACK(mode_m249)
ROLL_BACK(flagmodel)
ROLL_BACK(flagskin)
}
#else
void
player::EvaluateEntity(void)
{
/* the generic client attributes */
NSClientPlayer::EvaluateEntity();
/* animation */
if (ATTR_CHANGED(anim_bottom) || ATTR_CHANGED(anim_bottom_time))
SendFlags |= PLAYER_BOTTOMFRAME;
if (ATTR_CHANGED(anim_top) || ATTR_CHANGED(anim_top_time) || ATTR_CHANGED(anim_top_delay))
SendFlags |= PLAYER_TOPFRAME;
PowerupThink();
/* ammo 1 type updates */
if (ATTR_CHANGED(glock_mag))
SendFlags |= PLAYER_AMMO1;
if (ATTR_CHANGED(mp5_mag))
SendFlags |= PLAYER_AMMO1;
if (ATTR_CHANGED(python_mag))
SendFlags |= PLAYER_AMMO1;
if (ATTR_CHANGED(shotgun_mag))
SendFlags |= PLAYER_AMMO1;
if (ATTR_CHANGED(crossbow_mag))
SendFlags |= PLAYER_AMMO1;
if (ATTR_CHANGED(rpg_mag))
SendFlags |= PLAYER_AMMO1;
if (ATTR_CHANGED(satchel_chg))
SendFlags |= PLAYER_AMMO1;
EVALUATE_FIELD(anim_top, PLAYER_TOPFRAME)
EVALUATE_FIELD(anim_top_time, PLAYER_TOPFRAME)
EVALUATE_FIELD(anim_top_delay, PLAYER_TOPFRAME)
EVALUATE_FIELD(anim_bottom, PLAYER_BOTTOMFRAME)
EVALUATE_FIELD(anim_bottom_time, PLAYER_BOTTOMFRAME)
/* ammo 2 type updates */
if (ATTR_CHANGED(ammo_9mm))
SendFlags |= PLAYER_AMMO2;
if (ATTR_CHANGED(ammo_357))
SendFlags |= PLAYER_AMMO2;
if (ATTR_CHANGED(ammo_buckshot))
SendFlags |= PLAYER_AMMO2;
if (ATTR_CHANGED(ammo_bolt))
SendFlags |= PLAYER_AMMO2;
if (ATTR_CHANGED(ammo_rocket))
SendFlags |= PLAYER_AMMO2;
if (ATTR_CHANGED(ammo_uranium))
SendFlags |= PLAYER_AMMO2;
if (ATTR_CHANGED(ammo_handgrenade))
SendFlags |= PLAYER_AMMO2;
if (ATTR_CHANGED(ammo_satchel))
SendFlags |= PLAYER_AMMO2;
if (ATTR_CHANGED(ammo_tripmine))
SendFlags |= PLAYER_AMMO2;
if (ATTR_CHANGED(ammo_snark))
SendFlags |= PLAYER_AMMO2;
if (ATTR_CHANGED(ammo_hornet))
SendFlags |= PLAYER_AMMO2;
EVALUATE_FIELD(glock_mag, PLAYER_AMMO1)
EVALUATE_FIELD(mp5_mag, PLAYER_AMMO1)
EVALUATE_FIELD(python_mag, PLAYER_AMMO1)
EVALUATE_FIELD(shotgun_mag, PLAYER_AMMO1)
EVALUATE_FIELD(crossbow_mag, PLAYER_AMMO1)
EVALUATE_FIELD(rpg_mag, PLAYER_AMMO1)
EVALUATE_FIELD(satchel_chg, PLAYER_AMMO1)
if (ATTR_CHANGED(ammo_m203_grenade))
SendFlags |= PLAYER_AMMO3;
if (ATTR_CHANGED(ammo_gauss_volume))
SendFlags |= PLAYER_AMMO3;
if (ATTR_CHANGED(ammo_rpg_state))
SendFlags |= PLAYER_AMMO3;
if (ATTR_CHANGED(mode_tempstate))
SendFlags |= PLAYER_AMMO3;
EVALUATE_FIELD(ammo_9mm, PLAYER_AMMO2)
EVALUATE_FIELD(ammo_357, PLAYER_AMMO2)
EVALUATE_FIELD(ammo_buckshot, PLAYER_AMMO2)
EVALUATE_FIELD(ammo_bolt, PLAYER_AMMO2)
EVALUATE_FIELD(ammo_rocket, PLAYER_AMMO2)
EVALUATE_FIELD(ammo_uranium, PLAYER_AMMO2)
EVALUATE_FIELD(ammo_handgrenade, PLAYER_AMMO2)
EVALUATE_FIELD(ammo_satchel, PLAYER_AMMO2)
EVALUATE_FIELD(ammo_tripmine, PLAYER_AMMO2)
EVALUATE_FIELD(ammo_snark, PLAYER_AMMO2)
EVALUATE_FIELD(ammo_hornet, PLAYER_AMMO2)
SAVE_STATE(glock_mag)
SAVE_STATE(mp5_mag)
SAVE_STATE(python_mag)
SAVE_STATE(shotgun_mag)
SAVE_STATE(crossbow_mag)
SAVE_STATE(rpg_mag)
SAVE_STATE(satchel_chg)
SAVE_STATE(ammo_9mm)
SAVE_STATE(ammo_357)
SAVE_STATE(ammo_buckshot)
SAVE_STATE(ammo_bolt)
SAVE_STATE(ammo_rocket)
SAVE_STATE(ammo_uranium)
SAVE_STATE(ammo_handgrenade)
SAVE_STATE(ammo_satchel)
SAVE_STATE(ammo_tripmine)
SAVE_STATE(ammo_snark)
SAVE_STATE(ammo_hornet)
SAVE_STATE(ammo_m203_grenade)
SAVE_STATE(ammo_gauss_volume)
SAVE_STATE(ammo_rpg_state)
SAVE_STATE(mode_tempstate)
SAVE_STATE(anim_top)
SAVE_STATE(anim_top_delay)
SAVE_STATE(anim_top_time)
SAVE_STATE(anim_bottom)
SAVE_STATE(anim_bottom_time)
EVALUATE_FIELD(ammo_m203_grenade, PLAYER_AMMO3)
EVALUATE_FIELD(ammo_gauss_volume, PLAYER_AMMO3)
EVALUATE_FIELD(ammo_rpg_state, PLAYER_AMMO3)
EVALUATE_FIELD(mode_tempstate, PLAYER_AMMO3)
/* gearbox */
if (eagle_mag_net != eagle_mag)
SendFlags |= PLAYER_AMMO1;
if (sniper_mag_net != sniper_mag)
SendFlags |= PLAYER_AMMO1;
if (m249_mag_net != m249_mag)
SendFlags |= PLAYER_AMMO1;
if (sporelauncher_mag_net != sporelauncher_mag)
SendFlags |= PLAYER_AMMO1;
EVALUATE_FIELD(eagle_mag, PLAYER_AMMO1)
EVALUATE_FIELD(sniper_mag, PLAYER_AMMO1)
EVALUATE_FIELD(m249_mag, PLAYER_AMMO1)
EVALUATE_FIELD(sporelauncher_mag, PLAYER_AMMO1)
if (ammo_556_net != ammo_556)
SendFlags |= PLAYER_AMMO2;
if (ammo_762_net != ammo_762)
SendFlags |= PLAYER_AMMO2;
if (ammo_spore_net != ammo_spore)
SendFlags |= PLAYER_AMMO2;
if (ammo_shock_net != ammo_shock)
SendFlags |= PLAYER_AMMO2;
if (ammo_penguin_net != ammo_penguin)
SendFlags |= PLAYER_AMMO2;
EVALUATE_FIELD(ammo_556, PLAYER_AMMO2)
EVALUATE_FIELD(ammo_762, PLAYER_AMMO2)
EVALUATE_FIELD(ammo_spore, PLAYER_AMMO2)
EVALUATE_FIELD(ammo_shock, PLAYER_AMMO2)
EVALUATE_FIELD(ammo_penguin, PLAYER_AMMO2)
if (mode_displacer_net != mode_displacer)
SendFlags |= PLAYER_AMMO3;
if (mode_eagle_net != mode_eagle)
SendFlags |= PLAYER_AMMO3;
if (mode_wrench_net != mode_wrench)
SendFlags |= PLAYER_AMMO3;
if (mode_sporelauncher_net != mode_sporelauncher)
SendFlags |= PLAYER_AMMO3;
/* gearbox */
SAVE_STATE(eagle_mag)
SAVE_STATE(sniper_mag)
SAVE_STATE(m249_mag)
SAVE_STATE(sporelauncher_mag)
SAVE_STATE(ammo_556)
SAVE_STATE(ammo_762)
SAVE_STATE(ammo_spore)
SAVE_STATE(ammo_shock)
SAVE_STATE(ammo_penguin)
SAVE_STATE(mode_displacer)
SAVE_STATE(mode_eagle)
SAVE_STATE(mode_wrench)
SAVE_STATE(mode_sporelauncher)
SAVE_STATE(mode_m249)
EVALUATE_FIELD(mode_displacer, PLAYER_AMMO3)
EVALUATE_FIELD(mode_eagle, PLAYER_AMMO3)
EVALUATE_FIELD(mode_wrench, PLAYER_AMMO3)
EVALUATE_FIELD(mode_sporelauncher, PLAYER_AMMO3)
EVALUATE_FIELD(mode_m249, PLAYER_AMMO3)
EVALUATE_FIELD(flagmodel, PLAYER_FLAG)
EVALUATE_FIELD(flagskin, PLAYER_FLAG)
}
/*
@ -681,69 +531,59 @@ player::SendEntity(entity ePEnt, float flChanged)
WriteByte(MSG_ENTITY, ENT_PLAYER);
WriteFloat(MSG_ENTITY, flChanged);
/* the generic client attributes */
NSClientPlayer::SendEntity(ePEnt, flChanged);
if (flChanged & PLAYER_TOPFRAME) {
WriteByte(MSG_ENTITY, anim_top);
WriteFloat(MSG_ENTITY, anim_top_time);
WriteFloat(MSG_ENTITY, anim_top_delay);
}
if (flChanged & PLAYER_BOTTOMFRAME) {
WriteByte(MSG_ENTITY, anim_bottom);
WriteFloat(MSG_ENTITY, anim_bottom_time);
}
SENDENTITY_BYTE(anim_top, PLAYER_TOPFRAME)
SENDENTITY_FLOAT(anim_top_time, PLAYER_TOPFRAME)
SENDENTITY_FLOAT(anim_top_delay, PLAYER_TOPFRAME)
SENDENTITY_BYTE(anim_bottom, PLAYER_BOTTOMFRAME)
SENDENTITY_FLOAT(anim_bottom_time, PLAYER_BOTTOMFRAME)
if (flChanged & PLAYER_AMMO1) {
WriteByte(MSG_ENTITY, glock_mag);
WriteByte(MSG_ENTITY, mp5_mag);
WriteByte(MSG_ENTITY, python_mag);
WriteByte(MSG_ENTITY, shotgun_mag);
WriteByte(MSG_ENTITY, crossbow_mag);
WriteByte(MSG_ENTITY, rpg_mag);
WriteByte(MSG_ENTITY, satchel_chg);
SENDENTITY_BYTE(glock_mag, PLAYER_AMMO1)
SENDENTITY_BYTE(mp5_mag, PLAYER_AMMO1)
SENDENTITY_BYTE(python_mag, PLAYER_AMMO1)
SENDENTITY_BYTE(shotgun_mag, PLAYER_AMMO1)
SENDENTITY_BYTE(crossbow_mag, PLAYER_AMMO1)
SENDENTITY_BYTE(rpg_mag, PLAYER_AMMO1)
SENDENTITY_BYTE(satchel_chg, PLAYER_AMMO1)
/* gearbox */
WriteByte(MSG_ENTITY, eagle_mag);
WriteByte(MSG_ENTITY, sniper_mag);
WriteByte(MSG_ENTITY, m249_mag);
WriteByte(MSG_ENTITY, sporelauncher_mag);
}
SENDENTITY_BYTE(ammo_9mm, PLAYER_AMMO2)
SENDENTITY_BYTE(ammo_357, PLAYER_AMMO2)
SENDENTITY_BYTE(ammo_buckshot, PLAYER_AMMO2)
SENDENTITY_BYTE(ammo_bolt, PLAYER_AMMO2)
SENDENTITY_BYTE(ammo_rocket, PLAYER_AMMO2)
SENDENTITY_BYTE(ammo_uranium, PLAYER_AMMO2)
SENDENTITY_BYTE(ammo_handgrenade, PLAYER_AMMO2)
SENDENTITY_BYTE(ammo_satchel, PLAYER_AMMO2)
SENDENTITY_BYTE(ammo_tripmine, PLAYER_AMMO2)
SENDENTITY_BYTE(ammo_snark, PLAYER_AMMO2)
SENDENTITY_BYTE(ammo_hornet, PLAYER_AMMO2)
if (flChanged & PLAYER_AMMO2) {
WriteByte(MSG_ENTITY, ammo_9mm);
WriteByte(MSG_ENTITY, ammo_357);
WriteByte(MSG_ENTITY, ammo_buckshot);
WriteByte(MSG_ENTITY, ammo_bolt);
WriteByte(MSG_ENTITY, ammo_rocket);
WriteByte(MSG_ENTITY, ammo_uranium);
WriteByte(MSG_ENTITY, ammo_handgrenade);
WriteByte(MSG_ENTITY, ammo_satchel);
WriteByte(MSG_ENTITY, ammo_tripmine);
WriteByte(MSG_ENTITY, ammo_snark);
WriteByte(MSG_ENTITY, ammo_hornet);
SENDENTITY_BYTE(ammo_m203_grenade, PLAYER_AMMO3)
SENDENTITY_BYTE(ammo_gauss_volume, PLAYER_AMMO3)
SENDENTITY_BYTE(ammo_rpg_state, PLAYER_AMMO3)
SENDENTITY_BYTE(mode_tempstate, PLAYER_AMMO3)
/* gearbox */
WriteByte(MSG_ENTITY, ammo_556);
WriteByte(MSG_ENTITY, ammo_762);
WriteByte(MSG_ENTITY, ammo_spore);
WriteByte(MSG_ENTITY, ammo_shock);
WriteByte(MSG_ENTITY, ammo_penguin);
}
/* gearbox */
SENDENTITY_BYTE(eagle_mag, PLAYER_AMMO1)
SENDENTITY_BYTE(sniper_mag, PLAYER_AMMO1)
SENDENTITY_BYTE(m249_mag, PLAYER_AMMO1)
SENDENTITY_BYTE(sporelauncher_mag, PLAYER_AMMO1)
if (flChanged & PLAYER_AMMO3) {
WriteByte(MSG_ENTITY, ammo_m203_grenade);
WriteByte(MSG_ENTITY, ammo_gauss_volume);
WriteByte(MSG_ENTITY, ammo_rpg_state);
WriteByte(MSG_ENTITY, mode_tempstate);
/* gearbox */
WriteByte(MSG_ENTITY, mode_displacer);
WriteByte(MSG_ENTITY, mode_eagle);
WriteByte(MSG_ENTITY, mode_wrench);
WriteByte(MSG_ENTITY, mode_sporelauncher);
WriteByte(MSG_ENTITY, mode_m249);
}
SENDENTITY_BYTE(ammo_556, PLAYER_AMMO2)
SENDENTITY_BYTE(ammo_762, PLAYER_AMMO2)
SENDENTITY_BYTE(ammo_spore, PLAYER_AMMO2)
SENDENTITY_BYTE(ammo_shock, PLAYER_AMMO2)
SENDENTITY_BYTE(ammo_penguin, PLAYER_AMMO2)
SENDENTITY_BYTE(mode_displacer, PLAYER_AMMO3)
SENDENTITY_BYTE(mode_eagle, PLAYER_AMMO3)
SENDENTITY_BYTE(mode_wrench, PLAYER_AMMO3)
SENDENTITY_BYTE(mode_sporelauncher, PLAYER_AMMO3)
SENDENTITY_BYTE(mode_m249, PLAYER_AMMO3)
SENDENTITY_FLOAT(flagmodel, PLAYER_FLAG)
SENDENTITY_BYTE(flagskin, PLAYER_FLAG)
return (1);
}
#endif

40
src/shared/player_ctf.qc Normal file
View File

@ -0,0 +1,40 @@
/*
* Copyright (c) 2023 Marco Cawthorne <marco@icculus.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
* IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifdef SERVER
void
player::PowerupThink(void)
{
if (m_flPickUpTime > time)
return;
if (g_items & ITEM_CTF_SHIELD) {
armor += 1;
m_flPickUpTime = time + 0.5f;
} else if (g_items & ITEM_CTF_HEALTH) {
health += 1;
m_flPickUpTime = time + 0.5f;
} else if (g_items & ITEM_CTF_BACKPACK) {
m_flPickUpTime = time + 1.0;
if (activeweapon) {
if (Weapons_AddItem(this, activeweapon, 1)) {
StartSoundDef("op4ctf_backpack.refresh", CHAN_ITEM, false);
}
}
}
}
#endif

View File

@ -14,15 +14,6 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED weapon_displacer (0 0 1) (-16 -16 0) (16 16 32)
"model" "models/w_displacer.mdl"
HALF-LIFE: OPPOSING FORCE (1999) ENTITY
Displacer Weapon
*/
enum
{
DISP_IDLE1,
@ -86,9 +77,10 @@ int
w_displacer_pickup(player pl, int new, int startammo)
{
#ifdef SERVER
int addAmmo = (startammo == -1) ? 40 : startammo;
if (pl.ammo_uranium < MAX_A_URANIUM) {
pl.ammo_uranium = bound(0, pl.ammo_uranium + 40, MAX_A_URANIUM);
pl.ammo_uranium = bound(0, pl.ammo_uranium + addAmmo, MAX_A_URANIUM);
} else {
return (0);
}
@ -273,7 +265,7 @@ w_displacer_hud(player pl)
aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42];
Cross_DrawSub(
"sprites/ofch1.spr_0.tga",
g_ofch1_spr,
[24,24],
[48/72,0],
[24/72,24/72]
@ -321,7 +313,7 @@ w_displacer_hudpic(player pl, int selected, vector pos, float a)
drawsubpic(
pos,
[170,45],
"sprites/640hudof02.spr_0.tga",
g_ofhud2_spr,
[0,180/256],
[170/256,45/256],
hud_col,
@ -332,7 +324,7 @@ w_displacer_hudpic(player pl, int selected, vector pos, float a)
drawsubpic(
pos,
[170,45],
"sprites/640hudof01.spr_0.tga",
g_ofhud1_spr,
[0,180/256],
[170/256,45/256],
hud_col,

View File

@ -14,15 +14,6 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED weapon_eagle (0 0 1) (-16 -16 0) (16 16 32)
"model" "models/w_desert_eagle.mdl"
HALF-LIFE: OPPOSING FORCE (1999) ENTITY
Desert Eagle Weapon
*/
enum
{
EAGLE_IDLE1,
@ -56,12 +47,13 @@ int
w_eagle_pickup(player pl, int new, int startammo)
{
#ifdef SERVER
int addAmmo = (startammo == -1) ? 7 : startammo;
if (new) {
pl.eagle_mag = 7;
pl.eagle_mag = addAmmo;
} else {
if (pl.ammo_357 < MAX_A_357) {
pl.ammo_357 = bound(0, pl.ammo_357 + 7, MAX_A_357);
pl.ammo_357 = bound(0, pl.ammo_357 + addAmmo, MAX_A_357);
} else {
return (0);
}
@ -275,7 +267,7 @@ w_eagle_crosshair(player pl)
);
} else {
Cross_DrawSub(
"sprites/ofch1.spr_0.tga",
g_ofch1_spr,
[24,24],
[0,0],
[24/72, 24/72]
@ -332,7 +324,7 @@ w_eagle_hudpic(player pl, int selected, vector pos, float a)
drawsubpic(
pos,
[170,45],
"sprites/640hudof02.spr_0.tga",
g_ofhud2_spr,
[0,90/256],
[170/256,45/256],
hud_col,
@ -343,7 +335,7 @@ w_eagle_hudpic(player pl, int selected, vector pos, float a)
drawsubpic(
pos,
[170,45],
"sprites/640hudof01.spr_0.tga",
g_ofhud1_spr,
[0,90/256],
[170/256,45/256],
hud_col,

View File

@ -14,15 +14,6 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED weapon_grapple (0 0 1) (-16 -16 0) (16 16 32)
"model" "models/w_bgrap.mdl"
HALF-LIFE: OPPOSING FORCE (1999) ENTITY
Barnacle Grappling-Hook Weapon
*/
#ifdef CLIENT
/* because some people apparently prefer the worse quality one */
var int autocvar_cl_tonguemode = 0;
@ -101,6 +92,7 @@ w_grapple_holster(player pl)
}
/* called once the tongue hits a wall */
#ifdef SERVER
void
Grapple_Touch(void)
{
@ -109,8 +101,9 @@ Grapple_Touch(void)
pl.hook.touch = __NULL__;
pl.hook.velocity = [0,0,0];
pl.hook.solid = SOLID_NOT;
pl.a_ammo1 = 1;
pl.grapvelocity = (pl.hook.origin);
}
#endif
#ifdef CLIENT
/* draw the tongue from a to b */
@ -145,12 +138,13 @@ grapple_predraw(void)
void
w_grapple_primary(player pl)
{
#ifdef SERVER
/* it's already been spawned. */
if (pl.hook != __NULL__) {
/* play the looping reel anim once */
if (pl.a_ammo1 == 1) {
pl.a_ammo1 = 2;
Weapons_ViewAnimation(pl, BARN_FIRETRAVEL);
//Weapons_ViewAnimation(pl, BARN_FIRETRAVEL);
} else if (pl.a_ammo1 == 2) {
pl.hook.skin = 1; /* grappled */
}
@ -159,29 +153,18 @@ w_grapple_primary(player pl)
return;
}
#ifdef SERVER
Weapons_MakeVectors(pl);
vector src = Weapons_GetCameraPos(pl);
traceline(src, src + (v_forward * 32), FALSE, pl);
if (trace_ent.takedamage == DAMAGE_YES && trace_ent.iBleeds) {
Damage_Apply(trace_ent, pl, 25, WEAPON_GRAPPLE, DMG_GENERIC);
}
#endif
pl.w_attack_next = 0.5f;
return;
}
Weapons_MakeVectors(pl);
pl.hook = spawn();
#ifdef CLIENT
/*setmodel(pl.hook, "models/v_bgrap_tonguetip.mdl");*/
pl.hook.drawmask = MASK_ENGINE;
pl.hook.predraw = grapple_predraw;
#else
sound(pl, CHAN_WEAPON, "weapons/bgrapple_fire.wav", 1.0, ATTN_NORM);
sound(pl, CHAN_VOICE, "weapons/bgrapple_pull.wav", 1.0, ATTN_NORM);
#endif
setorigin(pl.hook, Weapons_GetCameraPos(pl) + (v_forward * 16));
pl.hook.owner = self;
pl.hook.velocity = v_forward * 1500;
@ -189,38 +172,48 @@ w_grapple_primary(player pl)
pl.hook.solid = SOLID_BBOX;
pl.hook.angles = vectoangles(pl.hook.velocity);
pl.hook.touch = Grapple_Touch;
setmodel(pl.hook, "models/hook.mdl");
setsize(pl.hook, [0,0,0], [0,0,0]);
#endif
if (pl.w_attack_next > 0.0) {
return;
}
Weapons_ViewAnimation(pl, BARN_FIRE);
pl.w_attack_next = 1.0f;
}
/* let go, hang */
void
w_grapple_secondary(player pl)
{
#ifdef SERVER
if (pl.hook == __NULL__) {
return;
}
pl.hook.skin = 0; /* ungrappled */
pl.grapvelocity = g_vec_null;
pl.w_attack_next = 0.0f;
#endif
}
/* de-spawn and play idle anims */
void
w_grapple_release(player pl)
{
#ifdef SERVER
if (pl.hook != __NULL__) {
pl.a_ammo1 = 0; /* cache */
pl.hook.skin = 0; /* ungrappled */
remove(pl.hook);
#ifdef CLIENT
Weapons_ViewAnimation(pl, BARN_FIRERELEASE);
#else
sound(pl, CHAN_VOICE, "weapons/bgrapple_release.wav", 1.0, ATTN_NORM);
#endif
pl.w_idle_next = 1.0f;
pl.hook = __NULL__;
pl.grapvelocity = g_vec_null;
pl.w_attack_next = 0.0f;
}
#endif
if (pl.w_idle_next > 0.0) {
return;
@ -257,7 +250,7 @@ w_grapple_hudpic(player pl, int selected, vector pos, float a)
drawsubpic(
pos,
[170,45],
"sprites/640hudof02.spr_0.tga",
g_ofhud2_spr,
[0,45/256],
[170/256,45/256],
g_hud_color,
@ -268,7 +261,7 @@ w_grapple_hudpic(player pl, int selected, vector pos, float a)
drawsubpic(
pos,
[170,45],
"sprites/640hudof01.spr_0.tga",
g_ofhud1_spr,
[0,45/256],
[170/256,45/256],
g_hud_color,

View File

@ -14,15 +14,6 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED weapon_knife (0 0 1) (-16 -16 0) (16 16 32)
"model" "models/w_knife.mdl"
HALF-LIFE: OPPOSING FORCE (1999) ENTITY
Knife Weapon
*/
enum
{
KNIFE_IDLE1,
@ -155,7 +146,7 @@ w_knife_primary(player pl)
if (trace_ent.iBleeds) {
FX_Blood(trace_endpos, [1,0,0]);
} else {
FX_Impact(IMPACT_MELEE, trace_endpos, trace_plane_normal);
SurfData_Impact(trace_ent, trace_endpos, trace_plane_normal);
}
if (trace_ent.takedamage) {
@ -219,7 +210,7 @@ w_knife_hudpic(player pl, int selected, vector pos, float a)
drawsubpic(
pos,
[170,45],
"sprites/640hudof04.spr_0.tga",
g_ofhud4_spr,
[0,90/256],
[170/256,45/256],
g_hud_color,
@ -230,7 +221,7 @@ w_knife_hudpic(player pl, int selected, vector pos, float a)
drawsubpic(
pos,
[170,45],
"sprites/640hudof03.spr_0.tga",
g_ofhud3_spr,
[0,90/256],
[170/256,45/256],
g_hud_color,

View File

@ -14,16 +14,6 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED weapon_m249 (0 0 1) (-16 -16 0) (16 16 32)
"model" "models/w_saw.mdl"
HALF-LIFE: OPPOSING FORCE (1999) ENTITY
M249 Weapon
*/
/* Animations */
enum
{
M249_IDLE1,
@ -55,12 +45,13 @@ int
w_m249_pickup(player pl, int new, int startammo)
{
#ifdef SERVER
int addAmmo = (startammo == -1) ? 50 : startammo;
if (new) {
pl.m249_mag = 50;
pl.m249_mag = addAmmo;
} else {
if (pl.ammo_556 < MAX_A_556) {
pl.ammo_556 = bound(0, pl.ammo_556 + 50, MAX_A_556);
pl.ammo_556 = bound(0, pl.ammo_556 + addAmmo, MAX_A_556);
} else {
return (0);
}
@ -227,7 +218,7 @@ w_m249_crosshair(player pl)
/* crosshair */
Cross_DrawSub(
"sprites/ofch1.spr_0.tga",
g_ofch1_spr,
[24,24],
[24/72,0],
[24/72, 24/72]
@ -285,7 +276,7 @@ w_m249_hudpic(player pl, int selected, vector pos, float a)
drawsubpic(
pos,
[170,45],
"sprites/640hudof02.spr_0.tga",
g_ofhud2_spr,
[0,135/256],
[170/256,45/256],
hud_col,
@ -296,7 +287,7 @@ w_m249_hudpic(player pl, int selected, vector pos, float a)
drawsubpic(
pos,
[170,45],
"sprites/640hudof01.spr_0.tga",
g_ofhud1_spr,
[0,135/256],
[170/256,45/256],
hud_col,

View File

@ -14,15 +14,6 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED weapon_penguin (0 0 1) (-16 -16 0) (16 16 32)
"model" "models/w_penguin.mdl"
HALF-LIFE: OPPOSING FORCE (1999) ENTITY
Penguin Weapon
*/
enum
{
PENGUIN_IDLE,
@ -37,9 +28,10 @@ int
w_penguin_pickup(player pl, int new, int startammo)
{
#ifdef SERVER
int addAmmo = (startammo == -1) ? 3 : startammo;
if (pl.ammo_penguin < MAX_A_PENGUIN) {
pl.ammo_penguin = bound(0, pl.ammo_penguin + 3, MAX_A_PENGUIN);
pl.ammo_penguin = bound(0, pl.ammo_penguin + addAmmo, MAX_A_PENGUIN);
} else {
return (0);
}
@ -138,14 +130,9 @@ penguin_die(void)
self.health = 0;
/* now we can explodededededed */
FX_Explosion(self.origin);
Damage_Radius(self.origin, self.owner, 150, 150 * 2.5f, TRUE, WEAPON_PENGUIN);
if (random() < 0.5) {
sound(self, 1, "weapons/explode3.wav", 1.0f, ATTN_NORM);
} else {
sound(self, 1, "weapons/explode4.wav", 1.0f, ATTN_NORM);
}
pointparticles(particleeffectnum("fx_explosion.main"), self.origin, [0,0,0], 1);
Damage_Radius(self.origin, self.owner, 150, 150 * 2.5f, TRUE, WEAPON_HANDGRENADE);
Sound_Play(self, CHAN_VOICE, "fx.explosion");
remove(self);
}
@ -320,11 +307,11 @@ w_penguin_hudpic(player pl, int s, vector pos, float a)
HUD_DrawAmmoBar(pos, pl.ammo_penguin, MAX_A_PENGUIN, a);
if (s) {
drawsubpic(pos, [170,45], "sprites/640hudof04.spr_0.tga",
drawsubpic(pos, [170,45], g_ofhud4_spr,
[0,180/256], [170/256,45/256],
hud_col, a, DRAWFLAG_ADDITIVE);
} else {
drawsubpic(pos, [170,45], "sprites/640hudof03.spr_0.tga",
drawsubpic(pos, [170,45], g_ofhud3_spr,
[0,180/256], [170/256,45/256],
hud_col, a, DRAWFLAG_ADDITIVE);
}

View File

@ -14,15 +14,6 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED weapon_pipewrench (0 0 1) (-16 -16 0) (16 16 32)
"model" "models/w_pipe_wrench.mdl"
HALF-LIFE: OPPOSING FORCE (1999) ENTITY
Pipe-Wrench Weapon
*/
enum
{
PIPE_IDLE1,
@ -153,7 +144,7 @@ w_pipewrench_primary(player pl)
if (trace_ent.iBleeds) {
FX_Blood(trace_endpos, [1,0,0]);
} else {
FX_Impact(IMPACT_MELEE, trace_endpos, trace_plane_normal);
SurfData_Impact(trace_ent, trace_endpos, trace_plane_normal);
}
if (trace_ent.takedamage) {
@ -228,7 +219,7 @@ w_pipewrench_release(player pl)
if (trace_ent.iBleeds) {
FX_Blood(trace_endpos, [1,0,0]);
} else {
FX_Impact(IMPACT_MELEE, trace_endpos, trace_plane_normal);
SurfData_Impact(trace_ent, trace_endpos, trace_plane_normal);
}
#endif
Weapons_ViewAnimation(pl, PIPE_ATTACKBIGHIT);
@ -292,7 +283,7 @@ w_pipewrench_hudpic(player pl, int selected, vector pos, float a)
drawsubpic(
pos,
[170,45],
"sprites/640hudof02.spr_0.tga",
g_ofhud2_spr,
[0,0],
[170/256,45/256],
g_hud_color,
@ -303,7 +294,7 @@ w_pipewrench_hudpic(player pl, int selected, vector pos, float a)
drawsubpic(
pos,
[170,45],
"sprites/640hudof01.spr_0.tga",
g_ofhud1_spr,
[0,0],
[170/256,45/256],
g_hud_color,

View File

@ -14,15 +14,6 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED weapon_shockrifle (0 0 1) (-16 -16 0) (16 16 32)
"model" "models/w_shock.mdl"
HALF-LIFE: OPPOSING FORCE (1999) ENTITY
Shockrifle Weapon
*/
#ifdef CLIENT
var int PART_SHOCKPIECE;
#endif
@ -116,7 +107,7 @@ w_shockrifle_shoothornet(player pl)
if (other.iBleeds) {
FX_Blood(trace_endpos, [1,0,0]);
} else {
FX_Spark(self.origin, trace_plane_normal);
pointparticles(particleeffectnum("fx_spark.main"), trace_endpos, trace_plane_normal, 1);
}
remove(self);
}
@ -198,7 +189,7 @@ w_shockrifle_crosshair(player pl)
vector aicon_pos;
Cross_DrawSub(
"sprites/ofch1.spr_0.tga",
g_ofch1_spr,
[24,24],
[0,24/72],
[24/72, 24/72]
@ -255,7 +246,7 @@ w_shockrifle_hudpic(player pl, int selected, vector pos, float a)
drawsubpic(
pos,
[170,45],
"sprites/640hudof04.spr_0.tga",
g_ofhud4_spr,
[0,45/256],
[170/256,45/256],
hud_col,
@ -266,7 +257,7 @@ w_shockrifle_hudpic(player pl, int selected, vector pos, float a)
drawsubpic(
pos,
[170,45],
"sprites/640hudof03.spr_0.tga",
g_ofhud3_spr,
[0,45/256],
[170/256,45/256],
hud_col,

View File

@ -14,15 +14,6 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED weapon_sniperrifle (0 0 1) (-16 -16 0) (16 16 32)
"model" "models/w_m40a1.mdl"
HALF-LIFE: OPPOSING FORCE (1999) ENTITY
Sniper-Rifle Weapon
*/
enum
{
SNIPER_DRAW,
@ -53,12 +44,13 @@ int
w_sniperrifle_pickup(player pl, int new, int startammo)
{
#ifdef SERVER
int addAmmo = (startammo == -1) ? 5 : startammo;
if (new) {
pl.sniper_mag = 5;
pl.sniper_mag = addAmmo;
} else {
if (pl.ammo_762 < MAX_A_762) {
pl.ammo_762 = bound(0, pl.ammo_762 + 5, MAX_A_762);
pl.ammo_762 = bound(0, pl.ammo_762 + addAmmo, MAX_A_762);
} else {
return (0);
}
@ -211,14 +203,14 @@ w_sniperrifle_crosshair(player pl)
#ifdef CLIENT
if (pl.viewzoom == 1.0f) {
Cross_DrawSub(
"sprites/ofch1.spr_0.tga",
g_ofch1_spr,
[24,24],
[0,48/72],
[24/72, 24/72]
);
} else {
Cross_Draw(
"sprites/ofch2.spr_0.tga",
g_ofch2_spr,
[256,256]
);
}
@ -261,9 +253,9 @@ w_sniperrifle_hudpic(player pl, int s, vector pos, float a)
HUD_DrawAmmoBar(pos, pl.ammo_762, MAX_A_762, a);
if (s) {
drawsubpic(pos, [170,45], "sprites/640hudof04.spr_0.tga", [0,135/256], [170/256,45/256], hud_col, a, DRAWFLAG_ADDITIVE);
drawsubpic(pos, [170,45], g_ofhud4_spr, [0,135/256], [170/256,45/256], hud_col, a, DRAWFLAG_ADDITIVE);
} else {
drawsubpic(pos, [170,45], "sprites/640hudof03.spr_0.tga", [0,135/256], [170/256,45/256], hud_col, a, DRAWFLAG_ADDITIVE);
drawsubpic(pos, [170,45], g_ofhud3_spr, [0,135/256], [170/256,45/256], hud_col, a, DRAWFLAG_ADDITIVE);
}
#endif
}

View File

@ -14,15 +14,6 @@
* OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*QUAKED weapon_sporelauncher (0 0 1) (-16 -16 0) (16 16 32)
"model" "models/w_spore_launcher.mdl"
HALF-LIFE: OPPOSING FORCE (1999) ENTITY
Sporelauncher Weapon
*/
enum
{
SPORE_IDLE1,
@ -189,12 +180,13 @@ int
w_sporelauncher_pickup(player pl, int new, int startammo)
{
#ifdef SERVER
int addAmmo = (startammo == -1) ? 5 : startammo;
if (new) {
pl.sporelauncher_mag = 5;
pl.sporelauncher_mag = addAmmo;
} else {
if (pl.ammo_spore < MAX_A_SPORE) {
pl.ammo_spore = bound(0, pl.ammo_spore + 5, MAX_A_SPORE);
pl.ammo_spore = bound(0, pl.ammo_spore + addAmmo, MAX_A_SPORE);
} else {
return (0);
}
@ -338,7 +330,7 @@ w_sporelauncher_crosshair(player pl)
vector aicon_pos;
Cross_DrawSub(
"sprites/ofch1.spr_0.tga",
g_ofch1_spr,
[24,24],
[24/72,24/72],
[24/72,24/72]
@ -396,7 +388,7 @@ w_sporelauncher_hudpic(player pl, int selected, vector pos, float a)
drawsubpic(
pos,
[170,45],
"sprites/640hudof04.spr_0.tga",
g_ofhud4_spr,
[0,0],
[170/256,45/256],
hud_col,
@ -407,7 +399,7 @@ w_sporelauncher_hudpic(player pl, int selected, vector pos, float a)
drawsubpic(
pos,
[170,45],
"sprites/640hudof03.spr_0.tga",
g_ofhud3_spr,
[0,0],
[170/256,45/256],
hud_col,

View File

@ -0,0 +1,635 @@
209
-3107.53 164.275 36.0312 8.000000 2
1 296.014801 0
208 214.148270 0
-3088.08 -188.531 36.0312 8.000000 3
0 296.014801 0
2 345.465027 0
190 329.093567 0
-3087.02 -502.552 180.031 8.000000 2
1 345.465027 0
3 90.907372 0
-3088.44 -593.448 180.031 8.000000 2
2 90.907372 0
4 346.336365 0
-3089.78 -908.426 324.031 8.000000 2
3 346.336365 0
5 152.993576 0
-3082.59 -1061.25 324.031 8.000000 2
4 152.993576 0
6 154.627060 0
-2928.03 -1066 324.031 8.000000 3
5 154.627060 0
7 448.334930 0
8 202.948288 2
-2942.12 -617.883 324.031 8.000000 1
6 448.334930 0
-2725.36 -1055.45 324.031 8.000000 3
6 202.948288 2
10 134.050232 0
9 435.616638 0
-2653.86 -625.741 324.031 8.000000 2
10 540.596680 0
8 435.616638 0
-2650.02 -1166.32 324.031 8.000000 3
9 540.596680 0
11 223.191040 0
8 134.050232 0
-2426.83 -1165.55 324.031 8.000000 2
10 223.191040 0
12 173.256027 0
-2253.7 -1158.99 324.031 8.000000 2
11 173.256027 0
13 83.346222 0
-2252.65 -1075.65 324.031 8.000000 2
12 83.346222 0
14 402.575775 0
-2252.57 -699.709 180.031 8.000000 2
13 402.575775 0
15 165.024185 0
-2417.57 -702.491 180.031 8.000000 2
14 165.024185 0
16 70.260796 0
-2418.6 -772.745 180.031 8.000000 2
15 70.260796 0
17 387.957825 0
-2422.1 -1132.97 36.0312 8.000000 2
16 387.957825 0
18 645.048035 0
-1777.07 -1127.66 36.0312 8.000000 2
17 645.048035 0
19 151.022980 0
-1793.54 -977.533 36.0312 8.000000 2
18 151.022980 0
20 143.290573 0
-1863.21 -852.323 36.0312 8.000000 3
19 143.290573 0
21 244.917191 0
23 229.688004 0
-2078.01 -969.99 36.0312 8.000000 2
20 244.917191 0
22 120.564590 0
-2084.96 -849.626 36.0312 8.000000 2
21 120.564590 0
204 158.356812 0
-1869.57 -622.723 36.0312 8.000000 3
20 229.688004 0
24 245.766602 0
187 425.024017 0
-1769.77 -398.134 36.0312 8.000000 3
23 245.766602 0
25 353.350311 0
187 464.275299 0
-1416.42 -399.568 36.0312 8.000000 2
24 353.350311 0
26 285.565460 0
-1422.35 -685.072 36.0312 8.000000 2
25 285.565460 0
27 82.664795 0
-1348.23 -721.672 36.0312 8.000000 3
26 82.664795 0
28 353.540558 0
31 389.140564 0
-996.357 -687.333 36.0312 8.000000 2
27 353.540558 0
29 296.557831 0
-1000.44 -390.803 36.0312 8.000000 2
28 296.557831 0
30 326.882904 0
-673.632 -397.611 36.0312 8.000000 2
29 326.882904 0
102 615.670532 0
-1368.11 -1110.3 36.0312 8.000000 2
27 389.140564 0
32 334.446838 0
-1033.7 -1115.22 36.0312 8.000000 2
31 334.446838 0
33 285.015930 0
-1030.94 -1400.23 36.0312 8.000000 2
32 285.015930 0
34 437.184265 0
-1016.25 -1837.16 36.0312 8.000000 3
33 437.184265 0
35 329.036316 0
198 451.485168 0
-687.242 -1841.33 36.0312 8.000000 3
34 329.036316 0
36 377.911896 0
198 385.790680 0
-310.449 -1870.39 36.0312 8.000000 2
35 377.911896 0
37 197.270096 0
-113.216 -1866.55 36.0312 8.000000 2
36 197.270096 0
38 334.296783 0
-113.348 -1532.26 36.0312 8.000000 2
37 334.296783 0
39 219.402573 0
-277.5 -1386.68 36.0312 8.000000 2
38 219.402573 0
40 179.345917 0
-290.194 -1565.58 36.0312 8.000000 2
39 179.345917 0
41 493.973450 0
-784.127 -1559.29 36.0312 8.000000 2
40 493.973450 0
42 143.293533 0
-802.235 -1417.14 36.0312 8.000000 2
41 143.293533 0
43 710.476624 0
-139.484 -1418.5 -219.969 8.000000 2
42 710.476624 0
44 218.239990 0
-144.293 -1200.31 -219.969 8.000000 2
43 218.239990 0
45 366.509338 0
-399.598 -937.35 -219.969 8.000000 2
44 366.509338 0
46 799.556580 0
-1199.04 -923.947 -219.969 8.000000 3
45 799.556580 0
47 899.247009 0
52 432.777405 0
-2098.06 -944.442 -219.969 8.000000 3
46 899.247009 0
48 525.858459 0
51 192.415619 0
-2623.78 -932.343 -219.969 8.000000 2
47 525.858459 0
49 479.568848 0
-2625.41 -1411.91 -219.969 8.000000 2
48 479.568848 0
50 170.766418 0
-2454.69 -1408.1 -219.969 8.000000 2
49 170.766418 0
182 453.839722 0
-2096.75 -752.031 -219.969 8.000000 2
47 192.415619 0
204 131.956848 0
-1211.51 -491.349 -219.969 8.000000 3
46 432.777405 0
53 262.439941 0
199 59.755684 0
-1201.28 -229.109 -219.969 8.000000 2
52 262.439941 0
54 101.361206 0
-1195.97 -128.204 -227.969 8.000000 4
53 101.361206 0
55 117.480362 0
145 368.354431 0
146 392.477814 0
-1198.28 -11.0187 -219.969 8.000000 2
54 117.480362 0
56 202.076813 0
-1201.51 191.032 -219.969 8.000000 2
55 202.076813 0
57 366.055695 0
-1462.33 447.871 -219.969 8.000000 2
56 366.055695 0
58 206.751221 0
-1461.66 654.621 -219.969 8.000000 2
57 206.751221 0
59 347.268188 0
-1235.32 884.799 -91.9688 8.000000 2
58 347.268188 0
60 208.577423 0
-1027.59 894.602 -75.9688 8.000000 2
59 208.577423 0
61 95.359558 0
-933.608 896.81 -59.9688 8.000000 2
60 95.359558 0
62 288.340118 0
-741.862 704.047 36.0312 8.000000 2
61 288.340118 0
63 397.019867 0
-345.341 684.155 36.0312 8.000000 3
62 397.019867 0
64 271.342407 0
65 176.510010 0
-347.959 955.484 36.0312 8.000000 1
63 271.342407 0
-168.867 687.694 36.0312 8.000000 3
63 176.510010 0
66 167.837738 0
109 294.531158 0
-164.482 855.474 36.0312 8.000000 2
65 167.837738 0
67 307.869324 0
-167.784 1142.23 148.031 8.000000 2
66 307.869324 0
68 190.358566 0
-169.049 1332.58 148.031 8.000000 2
67 190.358566 0
69 286.138092 0
34.085 1534.11 148.031 8.000000 2
68 286.138092 0
70 233.276260 0
267.232 1541.89 148.031 8.000000 2
69 233.276260 0
71 331.003021 0
598.235 1541.7 148.031 8.000000 2
70 331.003021 0
72 69.785301 0
644.679 1593.79 148.031 8.000000 2
71 69.785301 0
73 135.859879 0
780.13 1604.32 148.031 8.000000 2
72 135.859879 0
74 326.652283 0
788.084 1277.77 148.031 8.000000 2
73 326.652283 0
75 206.039261 0
994.121 1278.82 148.031 8.000000 2
74 206.039261 0
76 214.397232 0
1208.52 1279 148.031 8.000000 2
75 214.397232 0
77 174.959000 0
1337.64 1160.95 148.031 8.000000 2
76 174.959000 0
78 186.222046 0
1523.05 1143.56 148.031 8.000000 2
77 186.222046 0
79 249.835861 0
1761.24 1068.15 148.031 8.000000 4
78 249.835861 0
80 280.581207 0
81 125.689331 0
90 448.947235 0
1745.12 1344.13 196.031 8.000000 1
79 280.581207 0
1886.78 1062.03 148.031 8.000000 2
79 125.689331 0
82 480.504456 0
1883.53 581.541 148.031 8.000000 2
81 480.504456 0
83 134.869385 0
2018.28 575.893 148.031 8.000000 2
82 134.869385 0
84 376.092651 0
2016.93 923.324 292.031 8.000000 2
83 376.092651 0
85 61.454609 0
2078.34 925.758 292.031 8.000000 2
84 61.454609 0
86 352.795502 0
2079.59 572.965 292.031 8.000000 2
85 352.795502 0
87 195.261078 0
1884.37 569.129 292.031 8.000000 2
86 195.261078 0
88 195.969910 0
1870.81 764.629 292.031 8.000000 2
87 195.969910 0
89 121.467361 0
1887.68 884.919 292.031 8.000000 1
88 121.467361 0
1703.89 622.883 148.031 8.000000 2
79 448.947235 0
91 135.981033 0
1571.81 590.568 148.031 8.000000 2
90 135.981033 0
92 268.751465 0
1320.79 590.777 244.031 8.000000 2
91 268.751465 0
93 126.966286 0
1195.33 610.287 244.031 8.000000 2
92 126.966286 0
94 198.537231 0
1112.99 790.946 244.031 8.000000 2
93 198.537231 0
95 683.682495 0
429.739 815.147 244.031 8.000000 2
94 683.682495 0
96 283.086517 0
435.889 532.127 244.031 8.000000 2
95 283.086517 0
97 340.964539 0
776.714 541.862 244.031 8.000000 2
96 340.964539 0
98 270.657318 0
798.538 272.086 244.031 8.000000 2
97 270.657318 0
99 860.928162 0
813.747 -588.708 244.031 8.000000 2
98 860.928162 0
100 128.192825 0
685.634 -593.249 244.031 8.000000 2
99 128.192825 0
101 518.307129 0
210.895 -594.325 36.0312 8.000000 2
100 518.307129 0
102 330.160461 0
-57.9826 -402.725 36.0312 8.000000 4
101 330.160461 0
103 229.046005 0
30 615.670532 0
110 380.080841 0
19.6928 -187.252 36.0312 8.000000 2
102 229.046005 0
104 222.131241 0
26.9328 34.7611 36.0312 8.000000 2
103 222.131241 0
105 131.117218 0
28.6046 165.868 36.0312 8.000000 2
104 131.117218 0
106 168.662170 0
-140.011 161.908 36.0312 8.000000 2
105 168.662170 0
107 163.041367 0
-137.473 324.93 36.0312 8.000000 2
106 163.041367 0
108 274.582733 0
137.007 332.436 36.0312 8.000000 2
107 274.582733 0
109 350.677338 0
125.626 682.928 36.0312 8.000000 2
108 350.677338 0
65 294.531158 0
335.982 -418.208 36.0312 8.000000 2
102 380.080841 0
112 492.317047 32
335.969 -414.339 698.282 8.000000 1
113 23.932724 32
335.969 -414.616 528.148 8.000000 2
110 492.317047 0
111 170.134613 32
335.969 -437.623 692.747 8.000000 1
114 42.004753 32
335.969 -463.969 660.031 8.000000 1
115 82.977638 0
252.991 -463.997 660.031 8.000000 1
116 51.604626 0
254.162 -412.406 660.031 8.000000 3
115 51.604626 0
117 78.053116 0
112 155.211182 0
176.209 -416.355 660.031 8.000000 3
116 78.053116 0
118 97.697678 0
125 75.066353 0
182.61 -318.868 660.031 8.000000 2
117 97.697678 0
119 41.073898 0
218.225 -298.406 660.031 8.000000 2
118 41.073898 0
120 145.490509 0
363.698 -300.605 660.031 8.000000 2
119 145.490509 0
121 56.455124 0
411.969 -329.883 660.031 8.000000 2
120 56.455124 0
122 161.329788 0
403.675 -490.999 660.031 8.000000 2
121 161.329788 0
123 64.276787 0
360.554 -538.665 660.031 8.000000 2
122 64.276787 0
124 146.571442 0
213.988 -537.358 660.031 8.000000 2
123 146.571442 0
125 58.855145 0
177.202 -491.415 660.031 8.000000 2
124 58.855145 0
117 75.066353 0
-84.8481 -1775.87 428.031 8.000000 2
127 168.621399 0
181 329.312805 0
-159.409 -1624.63 428.031 8.000000 2
126 168.621399 0
128 187.404678 0
-292.601 -1492.79 428.031 8.000000 2
127 187.404678 0
129 170.894302 0
-444.189 -1413.89 428.031 8.000000 2
128 170.894302 0
130 259.817108 0
-703.84 -1404.6 428.031 8.000000 2
129 259.817108 0
131 830.914917 0
-1534.74 -1409.71 428.031 8.000000 2
130 830.914917 0
132 170.973740 0
-1689.13 -1483.16 428.031 8.000000 2
131 170.973740 0
133 145.553406 0
-1797.43 -1580.41 428.031 8.000000 2
132 145.553406 0
134 203.541336 0
-1978.93 -1672.53 428.031 8.000000 2
133 203.541336 0
135 461.215027 0
-2417.09 -1673.73 284.031 8.000000 2
134 461.215027 0
136 195.838669 0
-2597.01 -1596.4 284.031 8.000000 2
135 195.838669 0
137 194.967056 0
-2732.08 -1455.8 284.031 8.000000 2
136 194.967056 0
138 169.450317 0
-2809.99 -1305.32 284.031 8.000000 2
137 169.450317 0
139 806.990845 0
-2815.13 -498.343 284.031 8.000000 2
138 806.990845 0
140 189.497314 0
-2712.83 -338.833 284.031 8.000000 2
139 189.497314 0
141 181.063416 0
-2592.54 -203.5 284.031 8.000000 2
140 181.063416 0
142 195.626892 0
-2412.26 -127.545 284.031 8.000000 2
141 195.626892 0
143 242.901260 0
-2169.65 -115.591 284.031 8.000000 2
142 242.901260 0
144 263.482697 0
-1921.82 -113.779 194.604 8.000000 2
143 263.482697 0
145 508.027130 0
-1557.73 -115.811 -159.697 8.000000 2
144 508.027130 0
54 368.354431 0
-811.916 -129.634 -147.103 8.000000 2
54 392.477814 0
147 561.443665 0
-414.916 -128.624 249.897 8.000000 2
146 561.443665 0
148 777.971252 0
135.969 -124.718 799.215 8.000000 2
147 777.971252 0
149 169.715027 0
297.567 -126.66 851.037 8.000000 2
148 169.715027 0
150 197.907455 0
493.89 -126.666 876.031 8.000000 2
149 197.907455 0
151 240.140854 0
682.611 -123.338 727.57 8.000000 1
150 240.140854 0
911.892 -121.563 453.241 8.000000 4
151 357.531525 0
153 383.006073 0
98 459.975647 0
99 521.177307 0
1292.66 -124.401 412.031 8.000000 2
152 383.006073 0
154 204.041565 0
1472.61 -28.2125 412.031 8.000000 2
153 204.041565 0
155 250.184738 0
1631.61 164.949 412.031 8.000000 2
154 250.184738 0
156 313.133179 0
1666.87 476.072 408.738 8.000000 2
155 313.133179 0
157 259.128265 0
1655.32 723.317 332.031 8.000000 3
156 259.128265 0
158 239.555313 0
92 370.440063 0
1529.39 927.098 332.031 8.000000 2
157 239.555313 0
159 286.735260 0
1289.83 1084.67 332.031 8.000000 2
158 286.735260 0
160 330.440002 0
959.393 1087 332.031 8.000000 3
159 330.440002 0
161 281.772797 0
75 268.061798 0
689.23 1084.24 252.031 8.000000 2
160 281.772797 0
162 326.222656 0
363.064 1078.17 252.031 8.000000 2
161 326.222656 0
163 214.714203 0
174.705 975.103 252.031 8.000000 2
162 214.714203 0
164 280.333466 0
10.5184 747.881 252.031 8.000000 2
163 280.333466 0
165 985.677490 0
0.868958 -237.749 252.031 8.000000 2
164 985.677490 0
166 180.727844 0
-78.7364 -400 252.031 8.000000 2
165 180.727844 0
167 164.123764 0
-192.154 -518.63 252.031 8.000000 2
166 164.123764 0
168 177.144485 0
-348.856 -601.241 252.031 8.000000 2
167 177.144485 0
169 428.040070 0
-776.599 -617.192 252.031 8.000000 2
168 428.040070 0
170 184.408997 0
-944.699 -693.015 252.031 8.000000 2
169 184.408997 0
171 188.068039 0
-1075.05 -828.579 252.031 8.000000 2
170 188.068039 0
172 158.461868 0
-1141.21 -972.572 252.031 8.000000 2
171 158.461868 0
173 984.879272 0
-1147.54 -1957.43 252.031 8.000000 2
172 984.879272 0
174 169.148880 0
-1139.05 -2126.37 252.031 8.000000 2
173 169.148880 0
175 159.009521 0
-1077.01 -2272.78 252.031 8.000000 2
174 159.009521 0
176 173.432693 0
-950.35 -2391.25 252.031 8.000000 2
175 173.432693 0
177 209.614731 0
-758.281 -2475.2 252.031 8.000000 2
176 209.614731 0
178 263.894318 0
-506.867 -2480.79 332.031 8.000000 2
177 263.894318 0
179 228.245056 0
-292.24 -2403.13 332.031 8.000000 2
178 228.245056 0
180 180.615570 0
-168.838 -2271.24 332.031 8.000000 2
179 180.615570 0
181 199.296997 0
-84.059 -2090.88 332.031 8.000000 2
180 199.296997 0
126 329.312805 0
-2448.03 -1408.39 233.822 8.000000 2
50 453.839722 0
183 115.229683 32
-2448.03 -1409.2 349.049 8.000000 1
184 29.706343 32
-2448.03 -1431.57 368.588 8.000000 1
185 91.649208 32
-2448.03 -1511.66 324.031 8.000000 2
186 160.204865 0
136 175.997925 0
-2560.95 -1398.02 324.031 8.000000 3
185 160.204865 0
137 184.998520 0
182 144.901596 0
-2234.01 -404.016 36.0312 8.000000 3
188 279.049927 0
24 464.275299 0
23 425.024017 0
-2510.69 -367.707 36.0312 8.000000 2
189 291.114258 0
187 279.049927 0
-2780.21 -257.686 36.0312 8.000000 2
190 257.741943 0
188 291.114258 0
-2816.6 -2.52604 36.0312 8.000000 3
1 329.093567 0
189 257.741943 0
208 212.427032 0
3.18813 -130.164 420.031 8.000000 2
192 382.358124 0
166 328.248627 0
-2.51711 252.151 420.031 8.000000 2
191 382.358124 0
193 120.214394 0
112.274 267.977 388.031 8.000000 1
194 70.352791 0
107.173 330.422 356.031 8.000000 1
195 79.483498 0
170.179 337.054 308.031 8.000000 1
196 118.743256 0
238.563 282.068 228.031 8.000000 1
197 268.255615 0
210.406 23.0846 164.031 8.000000 1
104 224.014801 0
-772.945 -2217.48 36.0312 8.000000 2
34 451.485168 0
35 385.790680 0
-1152.03 -497.068 -219.969 8.000000 1
200 419.819580 0
-1152.03 -497.723 199.85 8.000000 1
201 35.465370 0
-1152.03 -517.667 229.177 8.000000 1
202 120.758583 0
-1152.03 -633.787 196.031 8.000000 1
203 172.990829 0
-1183.92 -691.308 36.0312 8.000000 2
27 167.083832 0
28 187.609329 0
-2095.76 -752.031 -59.116 8.000000 2
51 131.956848 0
205 109.441505 32
-2096.11 -752.031 21.4127 8.000000 1
206 54.275280 32
-2077.21 -752.031 72.2929 8.000000 1
207 49.775368 32
-2048.03 -769.668 36.0312 8.000000 1
22 88.074951 0
-2895.55 194.684 36.0312 8.000000 2
190 212.427032 0
0 214.148270 0

View File

@ -0,0 +1,772 @@
253
0 2320 332.031 8.000000 3
1 240.651733 0
176 154.535065 0
233 171.552078 0
0.24314 2079.35 332.031 8.000000 3
0 240.651733 0
2 180.259750 0
4 196.348389 0
180.498 2080.64 332.031 8.000000 2
1 180.259750 0
3 291.210266 0
458.066 2084.58 420.031 8.000000 1
2 291.210266 0
-196.105 2078.81 332.031 8.000000 2
1 196.348389 0
5 281.051239 0
-463.023 2079.2 420.031 8.000000 2
4 281.051239 0
6 772.338684 0
-429.965 2850.83 420.031 8.000000 2
5 772.338684 0
7 165.765747 0
-559.802 2747.78 420.031 8.000000 1
6 165.765747 0
-680.96 2851.3 420.031 8.000000 1
9 225.788452 0
-906.748 2851.29 420.031 8.000000 2
8 225.788452 0
10 85.679359 0
-992.4 2849.1 420.031 8.000000 2
9 85.679359 0
11 683.291870 0
-1663.87 2722.55 420.031 8.000000 2
10 683.291870 0
12 228.927078 0
-1858.87 2602.63 420.031 8.000000 2
11 228.927078 0
13 330.345490 0
-2120.65 2401.13 420.031 8.000000 2
12 330.345490 0
14 199.682159 0
-2298.1 2309.57 420.031 8.000000 2
13 199.682159 0
15 211.068527 0
-2415.59 2134.23 420.031 8.000000 2
14 211.068527 0
16 330.104309 0
-2609.18 1866.85 420.031 8.000000 2
15 330.104309 0
17 216.265366 0
-2724.24 1683.73 420.031 8.000000 2
16 216.265366 0
18 686.616211 0
-2854.4 1009.56 420.031 8.000000 2
17 686.616211 0
19 142.009949 0
-2849.51 867.637 420.031 8.000000 2
18 142.009949 0
20 381.786621 0
-2850.74 485.853 420.031 8.000000 3
19 381.786621 0
21 388.115753 0
22 219.705124 0
-2463.41 461.059 420.031 8.000000 2
20 388.115753 0
23 153.337677 0
-2650.57 576.432 420.031 8.000000 1
20 219.705124 0
-2310.08 460.659 420.031 8.000000 4
21 153.337677 0
24 144.358536 0
26 132.336823 0
45 199.678024 0
-2303.85 604.883 420.031 8.000000 2
23 144.358536 0
25 131.999283 0
-2172.11 613.192 420.031 8.000000 1
24 131.999283 0
-2185.82 415.132 420.031 8.000000 4
23 132.336823 0
27 236.998596 0
34 161.294464 0
45 205.273193 0
-2083.05 201.574 420.031 8.000000 2
26 236.998596 0
28 223.884079 0
-1859.18 204.304 420.031 8.000000 3
27 223.884079 0
29 195.960678 0
46 137.435562 0
-1663.68 217.762 420.031 8.000000 2
28 195.960678 0
30 214.577728 0
-1668.4 432.288 420.031 8.000000 3
29 214.577728 0
31 177.379883 0
33 193.277939 0
-1749.19 590.205 420.031 8.000000 2
30 177.379883 0
32 124.837746 0
-1873.81 582.934 420.031 8.000000 2
31 124.837746 0
33 163.764771 0
-1861.27 419.651 420.031 8.000000 3
32 163.764771 0
34 164.366501 0
30 193.277939 0
-2025.27 430.625 420.031 8.000000 3
26 161.294464 0
35 124.345291 0
33 164.366501 0
-2025.21 554.97 420.031 8.000000 2
34 124.345291 0
36 272.236053 0
-2027.25 803.091 308.031 8.000000 2
35 272.236053 0
37 221.490082 0
-2024.01 1024.31 297.565 8.000000 2
36 221.490082 0
38 210.190750 0
-2020.89 1234.41 292.031 8.000000 3
37 210.190750 0
39 284.815002 0
40 449.755188 0
-2175.03 1473.83 298.031 8.000000 3
38 284.815002 0
41 528.778870 0
43 1078.826782 0
-1663.1 1499.3 356.031 8.000000 2
38 449.755188 0
41 263.637543 0
-1730.46 1754.19 356.031 8.000000 3
40 263.637543 0
42 380.037933 0
39 528.778870 0
-1528.43 2076.08 356.031 8.000000 2
41 380.037933 0
43 426.172485 0
-1727.64 2449.94 402.533 8.000000 3
42 426.172485 0
44 108.976418 0
39 1078.826782 0
-1779.15 2540.67 434.031 8.000000 2
43 108.976418 0
12 101.939079 0
-2321.76 261.323 420.031 8.000000 2
23 199.678024 0
26 205.273193 0
-1871.38 67.4111 420.031 8.000000 3
28 137.435562 0
47 118.265121 0
137 152.726562 0
-1775.17 -1.3752 420.031 8.000000 3
46 118.265121 0
48 495.247070 0
137 123.184937 0
-1279.93 -1.32769 420.031 8.000000 4
47 495.247070 0
49 236.733688 0
50 235.601395 0
51 285.688141 0
-1269.9 235.194 420.031 8.000000 1
48 236.733688 0
-1279.22 -236.928 420.031 8.000000 1
48 235.601395 0
-994.591 12.8552 420.031 8.000000 2
48 285.688141 0
52 196.688751 0
-797.987 18.622 420.031 8.000000 2
51 196.688751 0
53 109.020409 0
-728.031 -64.9941 420.031 8.000000 2
52 109.020409 0
54 141.097351 0
-728.031 -65.1274 561.129 8.000000 2
53 141.097351 0
55 56.149940 0
-728.031 -40.8843 611.775 8.000000 2
56 101.351349 0
54 56.149940 0
-715.646 59.5942 607.003 8.000000 2
55 101.351349 0
57 68.416603 0
-682.031 1.02375 596.031 8.000000 2
56 68.416603 0
58 1308.818481 0
-682.031 1.47989 1904.85 8.000000 2
57 1308.818481 0
59 100.690491 0
-682.031 -16.2393 2003.97 8.000000 1
60 102.412384 0
-729.891 -71.2191 1932.03 8.000000 2
58 91.183868 0
61 44.647945 0
-768.163 -94.2119 1932.03 8.000000 2
60 44.647945 0
62 219.927979 0
-853.23 -8.91313 1748.03 8.000000 2
63 129.582581 0
58 232.398544 2
-982.811 -8.1578 1748.03 8.000000 2
62 129.582581 0
64 472.991669 0
-1455.62 2.37765 1740.03 8.000000 3
63 472.991669 0
65 350.940033 0
182 871.186829 0
-1467.37 -348.365 1740.03 8.000000 2
64 350.940033 0
66 528.078369 0
-1459.42 -876.384 1740.03 8.000000 2
65 528.078369 0
67 163.532806 0
-1458.51 -1039.91 1740.03 8.000000 2
66 163.532806 0
68 179.916580 0
-1458.06 -1219.83 1740.03 8.000000 2
67 179.916580 0
69 184.335327 0
-1317.46 -1339.04 1740.03 8.000000 2
68 184.335327 0
70 173.886734 0
-1191.46 -1458.88 1740.03 8.000000 2
69 173.886734 0
71 198.336456 0
-993.195 -1464.18 1740.03 8.000000 2
70 198.336456 0
72 145.786865 0
-847.409 -1463.65 1740.03 8.000000 2
71 145.786865 0
73 844.142212 0
-3.27258 -1460.57 1740.03 8.000000 3
72 844.142212 0
74 156.526215 0
75 415.331543 0
153.253 -1459.99 1740.03 8.000000 1
73 156.526215 0
-3.97762 -1045.23 1740.03 8.000000 2
73 415.331543 0
76 161.252884 0
-6.81607 -884.205 1748.03 8.000000 2
75 161.252884 0
77 210.507385 2
-2.34111 -684.031 1683.04 8.000000 2
82 548.018616 0
78 271.362640 0
5.88167 -684.031 1954.28 8.000000 1
79 68.723595 0
54.6542 -715.326 1991.23 8.000000 1
80 84.253799 0
97.0496 -757.721 1932.03 8.000000 1
81 74.312340 0
58.637 -821.335 1932.03 8.000000 2
80 74.312340 0
76 205.165131 0
-4.90747 -684.031 1135.03 8.000000 2
77 548.018616 0
83 110.592216 0
88.6618 -742.984 1135.03 8.000000 2
82 110.592216 0
84 115.927559 0
41.345 -848.815 1135.03 8.000000 2
83 115.927559 0
85 148.114548 0
0.408545 -990.735 1124.03 8.000000 2
84 148.114548 0
86 315.038483 0
-1.75337 -1305.77 1124.03 8.000000 3
85 315.038483 0
87 254.828796 0
101 493.199829 0
-256.41 -1315.14 1124.03 8.000000 2
86 254.828796 0
88 156.527039 0
-410.222 -1344.17 1124.03 8.000000 2
87 156.527039 0
89 230.833298 0
-405.251 -1574.95 1124.03 8.000000 2
88 230.833298 0
90 301.994568 0
-401.084 -1876.91 1124.03 8.000000 2
89 301.994568 0
91 285.512054 0
-424.345 -2161.48 1124.03 8.000000 3
90 285.512054 0
92 138.243057 0
100 163.590073 0
-524.733 -2256.52 1124.03 8.000000 3
91 138.243057 0
93 166.739594 0
100 146.506271 0
-664.202 -2347.9 1124.03 8.000000 3
92 166.739594 0
94 168.724899 0
100 239.854095 0
-832.913 -2345.72 1124.03 8.000000 2
93 168.724899 0
95 422.177155 0
-829.89 -1934.61 1220.03 8.000000 3
94 422.177155 0
96 194.997131 0
99 184.428589 0
-654.17 -1850.07 1220.03 8.000000 2
95 194.997131 0
97 116.103096 0
-630.6 -1736.39 1220.03 8.000000 2
96 116.103096 0
98 135.613449 0
-721.289 -1635.56 1220.03 8.000000 2
97 135.613449 0
99 211.178802 0
-891.372 -1760.73 1220.03 8.000000 2
95 184.428589 0
98 211.178802 0
-583.14 -2122.16 1124.03 8.000000 3
92 146.506271 0
91 163.590073 0
93 239.854095 0
-1.059 -1798.97 1124.03 8.000000 2
86 493.199829 0
102 558.234558 0
0.581197 -2357.2 1124.03 8.000000 2
101 558.234558 0
103 182.026627 0
0.668464 -2539.22 1124.03 8.000000 2
102 182.026627 0
104 354.947235 0
11.3979 -2893.92 1132.03 8.000000 2
103 354.947235 0
105 97.535088 0
26.8094 -2990.23 1132.03 8.000000 1
104 97.535088 0
0.546195 -3173.97 1047.77 8.000000 2
107 715.735291 0
150 318.768646 0
-0.0797477 -3173.97 332.031 8.000000 2
108 90.348221 0
106 715.735291 0
-76.986 -3126.55 332.031 8.000000 2
107 90.348221 0
109 115.220337 0
-66.4893 -3011.81 332.031 8.000000 2
108 115.220337 0
110 77.988884 0
-3.87204 -2965.32 332.031 8.000000 2
109 77.988884 0
111 423.144745 0
5.48654 -2542.28 332.031 8.000000 3
110 423.144745 0
112 456.902435 0
181 191.686081 0
-1.03136 -2085.42 332.031 8.000000 4
111 456.902435 0
113 188.381882 0
148 180.456238 0
181 274.297363 0
-189.353 -2080.67 332.031 8.000000 2
112 188.381882 0
114 286.040405 0
-461.519 -2081.61 420.031 8.000000 2
113 286.040405 0
115 237.823822 0
-470.248 -2319.27 420.031 8.000000 2
114 237.823822 0
116 519.324524 0
-462.574 -2838.54 420.031 8.000000 2
115 519.324524 0
117 429.317993 0
-891.727 -2850.47 420.031 8.000000 2
116 429.317993 0
118 124.462883 0
-1016.18 -2849.42 420.031 8.000000 2
117 124.462883 0
119 655.205383 0
-1658.91 -2722.15 420.031 8.000000 2
118 655.205383 0
120 202.640305 0
-1837.66 -2626.69 420.031 8.000000 2
119 202.640305 0
121 341.014557 0
-2117.15 -2431.3 420.031 8.000000 2
120 341.014557 0
122 217.624252 0
-2295.19 -2306.15 420.031 8.000000 2
121 217.624252 0
123 210.462173 0
-2416.83 -2134.4 420.031 8.000000 2
122 210.462173 0
124 311.016815 0
-2588.55 -1875.09 420.031 8.000000 2
123 311.016815 0
125 225.150970 0
-2712.5 -1687.13 420.031 8.000000 2
124 225.150970 0
126 717.446045 0
-2850.34 -983.052 420.031 8.000000 2
125 717.446045 0
127 126.420029 0
-2851.62 -856.638 420.031 8.000000 2
126 126.420029 0
128 407.808105 0
-2839.42 -449.013 420.031 8.000000 3
127 407.808105 0
129 355.762573 0
147 212.622513 0
-2483.72 -455.687 420.031 8.000000 2
128 355.762573 0
130 187.402252 0
-2296.32 -455.303 420.031 8.000000 3
129 187.402252 0
131 243.811386 0
136 252.535507 0
-2026.62 -462.092 420.031 8.000000 3
130 243.811386 0
140 179.136246 0
141 109.587311 0
-1642.64 -443.13 420.031 8.000000 3
133 243.887772 0
138 196.700775 0
140 230.843719 0
-1637.62 -199.294 420.031 8.000000 2
132 243.887772 0
134 208.782684 0
-1846.33 -204.578 420.031 8.000000 3
133 208.782684 0
135 247.631699 0
137 120.897270 0
-2093.86 -197.381 420.031 8.000000 2
134 247.631699 0
136 140.745148 0
-2233.99 -210.581 420.031 8.000000 2
135 140.745148 0
130 252.535507 0
-1865.44 -85.2 420.031 8.000000 3
134 120.897270 0
47 123.184937 0
46 152.726562 0
-1749.02 -608.589 420.031 8.000000 1
132 196.700775 0
-1874.45 -609.327 420.031 8.000000 1
140 161.660080 0
-1873.44 -447.67 420.031 8.000000 3
131 179.136246 0
139 161.660080 0
132 230.843719 0
-2021.03 -571.537 420.031 8.000000 2
131 109.587311 0
142 281.828003 0
-2023.54 -830.142 308.031 8.000000 2
141 281.828003 0
143 358.950165 0
-2025.08 -1188.73 292.031 8.000000 2
142 358.950165 0
144 310.349274 0
-2194.27 -1448.84 298.031 8.000000 2
143 310.349274 0
145 1107.965454 0
-1776.39 -2468.04 417.204 8.000000 2
144 1107.965454 0
146 63.195244 0
-1801.93 -2523.34 434.031 8.000000 2
145 63.195244 0
120 110.239471 0
-2670.82 -578.56 420.031 8.000000 1
128 212.622513 0
179.413 -2083.32 332.031 8.000000 2
112 180.456238 0
149 297.063202 0
462.947 -2072.78 420.031 8.000000 1
148 297.063202 0
2.84105 -3173.97 1366.53 8.000000 1
151 36.526535 0
-26.9688 -3170.07 1387.27 8.000000 1
152 98.554001 0
-90.7062 -3146.09 1316.03 8.000000 1
153 84.354218 0
-89.8483 -3061.74 1316.03 8.000000 3
152 84.354218 0
154 40.164177 6
105 229.301117 0
-115.97 -3067.29 1346.03 8.000000 2
155 243.787888 0
153 40.164177 0
-359.758 -3066.93 1346.03 8.000000 2
154 243.787888 0
156 721.981323 0
-356.375 -2344.96 1346.03 8.000000 2
155 721.981323 0
157 97.918541 0
-315.606 -2321.94 1260.03 8.000000 1
158 66.897118 0
-320.834 -2268.57 1220.03 8.000000 2
91 177.201065 0
92 225.690369 0
261.641 -2215.52 236.031 8.000000 2
160 191.064102 0
178 147.077805 0
70.5795 -2216.51 236.031 8.000000 2
159 191.064102 0
161 316.153992 0
-180.596 -2216.22 44.0312 8.000000 2
160 316.153992 0
162 361.337402 0
-541.925 -2218.65 44.0312 8.000000 2
161 361.337402 0
163 82.063919 0
-577.401 -2144.65 44.0312 8.000000 2
162 82.063919 0
164 1652.096191 0
-573.69 -492.56 44.0312 8.000000 2
163 1652.096191 0
165 109.024117 0
-471.591 -454.322 44.0312 8.000000 2
164 109.024117 0
166 329.697083 0
-142.112 -466.32 44.0312 8.000000 2
165 329.697083 0
167 135.942200 0
-32.6582 -385.697 44.0312 8.000000 2
166 135.942200 0
168 741.118469 0
-28.5073 355.41 44.0312 8.000000 2
167 741.118469 0
169 156.461166 0
-140.862 464.298 44.0312 8.000000 2
168 156.461166 0
170 354.792786 0
-495.595 457.79 44.0312 8.000000 2
169 354.792786 0
171 123.450943 0
-575.813 551.627 44.0312 8.000000 2
170 123.450943 0
172 1622.582397 0
-572.181 2174.21 44.0312 8.000000 2
171 1622.582397 0
173 140.842712 0
-438.092 2217.3 44.0312 8.000000 2
172 140.842712 0
174 299.932648 0
-140.137 2210.72 77.7831 8.000000 2
173 299.932648 0
175 396.577911 0
223.497 2209.39 236.031 8.000000 2
174 396.577911 0
177 161.875092 0
150.276 2356.03 332.031 8.000000 2
0 154.535065 0
177 68.768234 0
160.525 2355.86 264.031 8.000000 2
176 68.768234 0
175 161.875092 0
237.676 -2357.91 264.031 8.000000 2
159 147.077805 0
179 77.645378 0
160.031 -2357.64 264.031 8.000000 2
178 77.645378 0
180 70.215057 0
142.608 -2356.03 332.031 8.000000 2
179 70.215057 0
181 94.777901 0
47.8325 -2355.33 332.031 8.000000 3
180 94.777901 0
112 274.297363 0
111 191.686081 0
-1459.02 873.558 1740.03 8.000000 2
64 871.186829 0
183 152.049332 0
-1462.59 1025.57 1740.03 8.000000 2
182 152.049332 0
184 162.632797 0
-1463.07 1188.2 1740.03 8.000000 2
183 162.632797 0
185 187.751221 0
-1338.19 1328.39 1740.03 8.000000 2
184 187.751221 0
186 197.501678 0
-1196.17 1465.65 1740.03 8.000000 2
185 197.501678 0
187 214.993988 0
-981.183 1464.58 1740.03 8.000000 2
186 214.993988 0
188 141.798370 0
-839.394 1462.94 1740.03 8.000000 2
187 141.798370 0
189 856.805908 0
17.2951 1477.06 1740.03 8.000000 3
188 856.805908 0
190 124.383919 0
191 513.052063 0
141.658 1474.79 1740.03 8.000000 1
189 124.383919 0
4.49887 964.229 1748.03 8.000000 2
189 513.052063 0
192 93.946930 2
-9.57977 871.343 1748.03 8.000000 2
191 93.946930 0
193 189.069855 2
1.94256 684.031 1725.03 8.000000 2
194 232.408401 0
198 590.020264 0
1.32573 684.031 1957.44 8.000000 1
195 67.221542 0
-43.0276 703.699 2003.97 8.000000 1
196 84.520775 0
-77.7 731.386 1932.03 8.000000 1
197 90.363937 0
-71.4321 825.636 1932.03 8.000000 2
196 90.363937 0
192 199.426422 0
-2.32299 685.227 1135.03 8.000000 2
193 590.020264 0
199 86.406837 0
-69.58 739.473 1135.03 8.000000 2
198 86.406837 0
200 102.421173 0
-75.9791 841.694 1135.03 8.000000 2
199 102.421173 0
201 94.584763 0
0.59639 897.214 1135.03 8.000000 2
200 94.584763 0
202 408.344360 0
-10.9305 1305.25 1124.03 8.000000 3
201 408.344360 0
203 702.966736 0
208 397.316925 0
-2.72255 2008.17 1124.03 8.000000 2
202 702.966736 0
204 357.624054 0
-2.37542 2365.79 1124.03 8.000000 2
203 357.624054 0
205 192.844345 0
-5.09321 2558.61 1124.03 8.000000 2
204 192.844345 0
206 325.768585 0
-4.74774 2884.29 1132.03 8.000000 2
205 325.768585 0
207 129.024765 0
26.4408 3009.48 1132.03 8.000000 2
206 129.024765 0
243 172.453629 2
-408.247 1305.31 1124.03 8.000000 2
202 397.316925 0
209 269.937927 0
-405.513 1575.24 1124.03 8.000000 2
208 269.937927 0
210 509.736328 0
-407.8 2084.97 1124.03 8.000000 2
209 509.736328 0
211 179.998444 0
-469.45 2254.08 1124.03 8.000000 3
210 179.998444 0
212 369.605438 0
252 164.116776 0
-828.713 2340.9 1124.03 8.000000 2
211 369.605438 0
213 383.953552 0
-817.886 1969.3 1220.03 8.000000 2
212 383.953552 0
214 191.701874 0
-820.738 1777.62 1220.03 8.000000 2
213 191.701874 0
215 121.497932 0
-942.232 1778.55 1220.03 8.000000 1
216 208.342865 0
-1047.29 1781.84 1040.15 8.000000 2
217 169.297775 0
218 191.318680 0
-992.856 1942.15 1041.09 8.000000 2
216 169.297775 0
227 172.293945 0
-1013.15 1598.4 997.885 8.000000 2
216 191.318680 0
219 213.598618 0
-1114.27 1427.55 919.073 8.000000 2
218 213.598618 0
220 135.716171 0
-1213.48 1341.83 884.031 8.000000 2
219 135.716171 0
221 182.204086 0
-1337.93 1208.74 884.031 8.000000 2
220 182.204086 0
222 284.763550 0
-1577.73 1055.24 879.502 8.000000 2
221 284.763550 0
223 165.842743 0
-1733.55 998.927 872.161 8.000000 2
222 165.842743 0
224 354.408264 0
-2085.65 984.561 834.46 8.000000 2
223 354.408264 0
225 286.975250 0
-2356.08 990.183 738.578 8.000000 2
224 286.975250 0
226 529.186646 0
-2855.5 1002.53 564.031 8.000000 2
225 529.186646 0
232 699.174622 0
-980.459 2107.84 995.507 8.000000 2
217 172.293945 0
228 322.111176 0
-966.002 2400.29 861.282 8.000000 2
227 322.111176 0
229 513.949951 0
-996.482 2818.45 564.031 8.000000 2
228 513.949951 0
230 669.948792 0
-1654.59 2693.06 564.031 8.000000 3
229 669.948792 0
231 739.931091 0
43 300.874908 0
-2261.08 2269.19 564.031 8.000000 2
230 739.931091 0
232 722.997681 0
-2678.64 1678.96 564.031 8.000000 3
231 722.997681 0
226 699.174622 0
39 605.358887 0
2.512 2491.53 332.031 8.000000 2
0 171.552078 0
234 478.609985 0
1.27599 2970.14 332.031 8.000000 2
233 478.609985 0
235 90.887711 0
74.2664 3024.3 332.031 8.000000 2
234 90.887711 0
236 102.495819 0
65.2962 3126.4 332.031 8.000000 2
235 102.495819 0
237 83.887756 0
-3.80173 3173.97 332.031 8.000000 2
236 83.887756 0
243 755.145813 0
0.150615 3173.97 1253.56 8.000000 1
239 117.760284 0
1.80572 3173.97 1371.31 8.000000 1
240 83.952240 0
70.5516 3126.78 1361.57 8.000000 1
241 74.764549 0
83.6484 3079.53 1316.03 8.000000 2
242 87.958107 0
249 113.281357 0
54.683 3017.6 1316.03 8.000000 2
241 87.958107 0
207 186.331497 0
0.519904 3173.97 1087.16 8.000000 2
237 755.145813 0
238 166.393234 0
-356.496 2346.86 1346.03 8.000000 2
245 721.455566 0
250 95.497086 0
-362.462 3068.29 1346.03 8.000000 2
244 721.455566 0
246 251.785278 0
-110.678 3067.34 1346.03 8.000000 2
245 251.785278 0
247 38.531620 0
-86.4989 3067.16 1316.03 8.000000 2
246 38.531620 6
248 95.136681 0
-85.697 2972.03 1316.03 8.000000 2
247 95.136681 0
249 169.474792 0
83.7579 2974.63 1316.03 8.000000 2
248 169.474792 0
241 113.281357 0
-322.012 2323.74 1260.03 8.000000 1
251 73.155388 0
-319.214 2262.55 1220.03 8.000000 1
211 178.490326 0
-571.283 2125.38 1124.03 8.000000 1
211 164.116776 0

View File

@ -0,0 +1,979 @@
318
-192 512 560 32.000000 0
3247.03 -324.812 452.031 8.000000 1
2 413.247955 0
2833.87 -333.667 452.031 8.000000 2
1 413.247955 0
3 186.568039 0
2694.48 -209.66 452.031 8.000000 2
2 186.568039 0
4 173.373474 0
2585.88 -344.803 452.031 8.000000 2
3 173.373474 0
5 343.873352 0
2242.01 -344.588 452.031 8.000000 2
4 343.873352 0
6 260.880951 0
2243.03 -605.467 452.031 8.000000 2
5 260.880951 0
7 275.192566 0
2241.94 -856.835 564.031 8.000000 2
6 275.192566 0
8 315.917145 0
2242.54 -1172.75 564.031 8.000000 3
7 315.917145 0
9 116.583809 0
10 122.723351 0
2125.96 -1172.63 564.031 8.000000 3
8 116.583809 0
10 154.350891 0
199 115.544685 0
2221.7 -1293.69 564.031 8.000000 3
8 122.723351 0
11 150.363922 0
9 154.350891 0
2372.06 -1294.8 564.031 8.000000 3
10 150.363922 0
12 187.733246 0
14 217.238602 0
2367.26 -1107.13 564.031 8.000000 2
11 187.733246 0
13 256.462341 0
2367.42 -869.309 468.031 8.000000 2
12 256.462341 0
19 420.391693 0
2386.83 -1510.2 588.031 8.000000 2
11 217.238602 0
15 93.550598 0
2479.97 -1501.43 588.031 8.000000 2
14 93.550598 0
16 205.065277 0
2479.97 -1500.65 793.095 8.000000 2
15 205.065277 0
17 64.472816 0
2543.49 -1499.25 804.031 8.000000 2
16 64.472816 0
18 206.909851 0
2716.97 -1612.02 804.031 8.000000 1
17 206.909851 0
2713.81 -631.639 452.031 8.000000 3
13 420.391693 0
20 314.860687 0
61 392.286194 0
3016.21 -545.419 468.031 8.000000 2
19 314.860687 0
21 128.306717 0
3144.5 -543.232 468.031 8.000000 2
20 128.306717 0
22 86.162155 0
3152.77 -628.997 468.031 8.000000 2
21 86.162155 0
23 156.491394 0
3194.8 -779.738 468.031 8.000000 2
22 156.491394 0
24 296.912170 0
3199.86 -1060.66 372.031 8.000000 2
23 296.912170 0
25 105.466316 0
3305.32 -1059.84 372.031 8.000000 2
24 105.466316 0
26 352.468140 0
3302.17 -720.71 276.031 8.000000 2
25 352.468140 0
27 353.496704 0
3303.93 -380.503 180.031 8.000000 2
26 353.496704 0
28 139.509918 0
3164.42 -380.837 180.031 8.000000 2
27 139.509918 0
29 189.327316 0
3168.92 -191.564 180.031 8.000000 2
28 189.327316 0
30 407.441559 0
3089.34 207.378 157.192 8.000000 2
29 407.441559 0
31 279.662323 0
3052.17 484.508 151.909 8.000000 2
30 279.662323 0
32 329.906494 0
3022.98 806.385 85.7188 8.000000 2
31 329.906494 0
33 216.918198 0
2832.37 909.348 74.75 8.000000 2
32 216.918198 0
34 255.027695 0
2626.39 759.989 57.275 8.000000 2
33 255.027695 0
198 155.609619 0
2599.43 265.828 -118.149 8.000000 3
36 346.298248 0
197 162.899399 0
198 375.749176 0
2514.49 -69.8789 -115.254 8.000000 2
35 346.298248 0
37 254.856659 0
2265.02 -107.752 -151.121 8.000000 2
36 254.856659 0
38 359.588989 0
1998.7 -349.348 -148.472 8.000000 2
37 359.588989 0
39 545.430176 0
1470.38 -345.937 -283.969 8.000000 2
38 545.430176 0
40 219.475403 0
1251.29 -359.041 -283.969 8.000000 2
39 219.475403 0
41 194.008408 0
1345.16 -528.828 -283.969 8.000000 2
40 194.008408 0
42 135.224075 0
1372.35 -661.292 -283.969 8.000000 2
41 135.224075 0
43 238.831024 0
1502.01 -861.86 -283.969 8.000000 2
42 238.831024 0
44 196.389175 0
1521.64 -1057.27 -283.969 8.000000 2
43 196.389175 0
45 232.612106 0
1443.27 -1276.28 -283.969 8.000000 2
44 232.612106 0
46 234.242584 0
1312.46 -1470.59 -283.969 8.000000 2
45 234.242584 0
47 211.035416 0
1278.23 -1678.83 -283.969 8.000000 2
46 211.035416 0
48 289.230408 0
1233.08 -1964.52 -283.969 8.000000 2
47 289.230408 0
49 833.618774 0
1820.16 -2556.35 -283.969 8.000000 2
48 833.618774 0
50 164.093536 0
1945.77 -2450.77 -283.969 8.000000 2
49 164.093536 0
51 320.701202 0
2164.17 -2215.93 -283.969 8.000000 2
50 320.701202 0
52 204.053970 0
2361.2 -2162.82 -283.969 8.000000 2
51 204.053970 0
53 132.330322 0
2477.58 -2099.84 -283.969 8.000000 3
52 132.330322 0
54 412.506683 0
55 53.811653 0
2890.07 -2096.41 -283.969 8.000000 1
53 412.506683 0
2480.72 -2046.12 -283.969 8.000000 2
53 53.811653 0
56 626.666504 0
2480.81 -1939.86 333.622 8.000000 2
55 626.666504 0
57 63.431076 0
2479.32 -1907.29 388.031 8.000000 2
56 63.431076 0
58 108.982986 0
2479.45 -1798.31 388.031 8.000000 2
57 108.982986 0
59 214.917099 0
2694.07 -1809.62 388.031 8.000000 3
58 214.917099 0
60 487.886810 0
62 901.803650 0
2693.32 -1321.74 388.031 8.000000 2
61 303.534943 0
59 487.886810 0
2694.89 -1018.21 388.031 8.000000 2
60 303.534943 0
19 392.286194 0
2701.8 -2711.39 388.031 8.000000 2
59 901.803650 0
63 226.499252 0
2476.29 -2690.25 388.031 8.000000 3
62 226.499252 0
64 363.329742 0
97 106.592285 0
2177.27 -2896.64 388.031 8.000000 2
63 363.329742 0
65 373.455750 0
1803.83 -2900.15 388.031 8.000000 2
64 373.455750 0
66 424.576569 0
1437.92 -2684.81 388.031 8.000000 3
65 424.576569 0
67 236.632889 0
72 175.680374 0
1210.2 -2620.47 388.031 8.000000 2
66 236.632889 0
68 362.582733 0
1085.77 -2279.91 388.031 8.000000 2
67 362.582733 0
69 315.600891 0
892.456 -2030.44 388.031 8.000000 2
68 315.600891 0
70 354.452332 0
751.559 -1705.2 388.031 8.000000 2
69 354.452332 0
71 634.298218 0
802.963 -1072.99 388.031 8.000000 1
70 634.298218 0
1353.85 -2531.24 373.431 8.000000 2
73 289.953857 0
66 175.680374 0
1255.72 -2287.26 251.286 8.000000 2
72 289.953857 0
74 452.871216 0
1019.45 -1970.11 30.6405 8.000000 2
73 452.871216 0
75 283.972229 0
908.836 -1725.22 -61.1936 8.000000 2
74 283.972229 0
76 372.426117 0
912.052 -1391.97 -227.423 8.000000 2
75 372.426117 0
77 394.542206 0
929.006 -1069.15 -453.615 8.000000 2
76 394.542206 0
78 397.929657 0
843.175 -710.853 -603.969 8.000000 3
77 397.929657 0
79 524.342407 0
83 171.925278 0
482.069 -330.672 -603.969 8.000000 2
78 524.342407 0
80 155.375351 0
375.468 -217.633 -603.969 8.000000 2
79 155.375351 0
81 337.919250 0
117.203 0.285607 -603.969 8.000000 2
80 337.919250 0
82 222.090866 0
-104.813 6.03181 -603.969 8.000000 1
81 222.090866 0
953.114 -843.033 -603.969 8.000000 2
78 171.925278 0
84 253.799927 0
1036.96 -1082.58 -603.969 8.000000 2
83 253.799927 0
85 532.833435 0
979.911 -1612.36 -603.969 8.000000 3
84 532.833435 0
86 219.302536 0
233 124.719971 0
973.553 -1831.57 -603.969 8.000000 2
85 219.302536 0
87 201.610764 0
1080.61 -2002.41 -603.969 8.000000 2
86 201.610764 0
88 407.200012 0
1339.37 -2316.82 -603.969 8.000000 2
87 407.200012 0
89 152.041245 0
1417.2 -2447.42 -603.969 8.000000 2
88 152.041245 0
90 428.333099 0
1777.84 -2678.52 -603.969 8.000000 2
89 428.333099 0
91 323.450562 0
2101.29 -2680.7 -603.969 8.000000 2
90 323.450562 0
92 347.481384 0
2403.02 -2508.37 -603.969 8.000000 2
91 347.481384 0
93 89.088486 0
2486.11 -2540.51 -603.969 8.000000 3
92 89.088486 0
94 144.406113 0
96 449.227142 0
2617.34 -2480.25 -603.969 8.000000 2
93 144.406113 0
95 445.190460 0
3059.45 -2532.59 -603.969 8.000000 1
94 445.190460 0
2489.07 -2575.07 -156.083 8.000000 2
93 449.227142 0
97 480.084381 0
2481.27 -2605.99 322.941 8.000000 2
96 480.084381 0
63 106.592285 0
2340.92 -1880.22 388.031 8.000000 1
99 198.457047 0
2152.54 -1942.65 388.031 8.000000 2
98 198.457047 0
100 373.072266 0
1903.96 -2220.84 388.031 8.000000 2
99 373.072266 0
101 125.837311 0
1784.57 -2260.59 388.031 8.000000 2
100 125.837311 0
102 408.980377 0
1511.9 -1955.77 388.031 8.000000 2
101 408.980377 0
103 462.866608 0
1584.72 -1498.67 388.031 8.000000 2
102 462.866608 0
104 294.482391 0
1745.29 -1251.81 388.031 8.000000 2
103 294.482391 0
105 334.382935 0
1787.37 -920.084 388.031 8.000000 2
104 334.382935 0
106 291.435425 0
1645.77 -665.36 388.031 8.000000 2
105 291.435425 0
107 533.105896 0
1634.99 -132.489 399.597 8.000000 2
106 533.105896 0
108 355.680511 0
1279.5 -130.007 388.031 8.000000 2
107 355.680511 0
109 209.555161 0
1102.44 -17.9292 388.031 8.000000 2
108 209.555161 0
110 371.310638 0
776.899 160.666 388.031 8.000000 2
109 371.310638 0
111 382.499542 0
461.423 376.955 388.031 8.000000 2
110 382.499542 0
112 487.710907 0
2.3415 541.594 388.031 8.000000 3
111 487.710907 0
113 385.508728 0
180 373.309052 0
3.63115 156.515 369.879 8.000000 2
112 385.508728 0
114 379.306763 0
3.9924 -222.357 388.031 8.000000 3
113 379.306763 0
115 275.110474 0
116 285.198334 0
267.513 -301.369 388.031 8.000000 1
114 275.110474 0
-276.066 -276.258 388.031 8.000000 2
114 285.198334 0
117 643.665161 0
-746.731 -715.324 388.031 8.000000 2
116 643.665161 0
118 454.776581 0
-889.953 -1146.96 388.031 8.000000 2
117 454.776581 0
119 211.732651 0
-860.477 -1356.63 388.031 8.000000 2
118 211.732651 0
120 304.276581 0
-654.169 -1580.29 388.031 8.000000 2
119 304.276581 0
121 222.180466 0
-624.856 -1800.52 388.031 8.000000 2
120 222.180466 0
122 247.477432 0
-727.376 -2025.77 388.031 8.000000 2
121 247.477432 0
123 434.065033 0
-1088.6 -2266.46 388.031 8.000000 2
122 434.065033 0
124 271.708069 0
-1238.55 -2493.04 388.031 8.000000 2
123 271.708069 0
125 227.689896 0
-1359.89 -2685.7 388.031 8.000000 2
124 227.689896 0
126 441.111633 0
-1736.73 -2914.99 388.031 8.000000 2
125 441.111633 0
127 495.090820 0
-2231.73 -2905.43 388.031 8.000000 2
126 495.090820 0
128 399.175446 0
-2579.12 -2708.81 388.031 8.000000 3
127 399.175446 0
129 221.121902 0
245 87.881409 0
-2799.73 -2693.74 388.031 8.000000 2
128 221.121902 0
130 887.211121 0
-2783.4 -1806.68 388.031 8.000000 3
129 887.211121 0
131 482.180817 0
134 213.963791 0
-2793.66 -1324.61 388.031 8.000000 4
130 482.180817 0
132 287.609558 0
313 302.508179 0
317 199.001495 0
-2785.73 -1037.11 388.031 8.000000 5
131 287.609558 0
133 457.451202 0
312 303.612305 0
314 358.043732 0
317 228.118210 0
-2781.4 -584.176 452.031 8.000000 3
132 457.451202 0
294 235.561691 0
301 236.127731 0
-2570.59 -1828.86 388.031 8.000000 3
130 213.963791 0
135 174.443390 0
247 124.287392 0
-2405.15 -1884.18 388.031 8.000000 2
134 174.443390 0
136 357.086700 0
-2149.77 -2133.76 388.031 8.000000 2
135 357.086700 0
137 267.790680 0
-1894.61 -2215.04 388.031 8.000000 2
136 267.790680 0
138 245.555222 0
-1654.98 -2161.44 388.031 8.000000 2
137 245.555222 0
139 334.944519 0
-1416.75 -1925.99 388.031 8.000000 2
138 334.944519 0
140 246.032104 0
-1287.09 -1716.9 388.031 8.000000 3
139 246.032104 0
141 157.604004 0
264 128.477371 0
-1376.78 -1587.3 388.031 8.000000 2
140 157.604004 0
142 460.732605 0
-1734.81 -1297.33 388.031 8.000000 2
141 460.732605 0
143 261.919647 0
-1871.42 -1073.86 388.031 8.000000 2
142 261.919647 0
144 374.023224 0
-1818.8 -703.553 388.031 8.000000 2
143 374.023224 0
145 315.509705 0
-1539.48 -556.839 388.031 8.000000 2
144 315.509705 0
146 356.187897 0
-1183.41 -566.34 388.031 8.000000 2
145 356.187897 0
147 390.866058 0
-905.581 -291.413 388.031 8.000000 2
146 390.866058 0
148 493.748718 0
-847.029 198.851 388.031 8.000000 1
147 493.748718 0
-634.252 441.295 -283.969 8.000000 2
150 365.709869 0
250 161.469452 0
-580.089 79.6184 -283.969 8.000000 4
149 365.709869 0
151 149.105240 0
219 120.368027 0
254 88.996536 0
-729.193 80.1614 -283.969 8.000000 2
150 149.105240 0
152 477.386688 0
-1186.09 63.4461 -146.608 8.000000 2
151 477.386688 0
153 300.470764 0
-1429.77 -112.242 -140.621 8.000000 2
152 300.470764 0
154 148.976547 0
-1568.58 -65.4739 -113.459 8.000000 2
153 148.976547 0
155 184.030167 0
-1734.22 14.7201 -113.342 8.000000 2
154 184.030167 0
156 223.339386 0
-1948.43 77.833 -116.444 8.000000 2
155 223.339386 0
157 232.491745 0
-1995.05 305.599 -117.829 8.000000 3
156 232.491745 0
158 163.351608 0
265 133.739487 0
-1838.38 351.435 -123.969 8.000000 2
157 163.351608 0
159 207.291168 0
-1781.2 550.63 -119.281 8.000000 2
158 207.291168 0
160 304.431152 0
-1765.99 839.643 -24.8455 8.000000 2
159 304.431152 0
161 300.093048 0
-1773.12 1139.65 -25.5514 8.000000 2
160 300.093048 0
162 239.245529 0
-1636.53 1336.07 -23.9595 8.000000 2
161 239.245529 0
163 395.452759 0
-1245.47 1394.8 -25.3319 8.000000 2
162 395.452759 0
164 469.582489 0
-785.026 1396.57 66.852 8.000000 2
163 469.582489 0
165 320.264435 0
-467.425 1355.37 68.0312 8.000000 2
164 320.264435 0
166 93.516884 0
-374.067 1360.82 68.0312 8.000000 2
165 93.516884 0
167 76.197533 0
-357.603 1435.21 68.0312 8.000000 2
166 76.197533 0
168 164.978119 0
-192.709 1429.94 68.0312 8.000000 2
167 164.978119 0
169 71.503029 0
-163.315 1364.76 68.0312 8.000000 2
168 71.503029 0
170 165.427536 0
2.07028 1368.52 68.0312 8.000000 3
169 165.427536 0
171 229.912781 0
185 119.410660 0
-0.314064 1140.85 100.031 8.000000 3
170 229.912781 0
172 177.662018 0
173 106.313805 0
177.313 1137.31 100.031 8.000000 2
171 177.662018 0
184 139.185532 0
-101.467 1108.13 100.031 8.000000 2
171 106.313805 0
174 86.440742 0
-187.755 1102.99 100.031 8.000000 3
173 86.440742 0
175 136.007248 0
176 107.935570 0
-255.864 1220.72 100.031 8.000000 1
174 136.007248 0
-175.802 995.722 100.031 8.000000 2
174 107.935570 0
177 372.062836 0
-527.9 1003.31 220.031 8.000000 2
176 372.062836 0
178 112.694244 0
-512.827 891.633 220.031 8.000000 2
177 112.694244 0
179 442.325775 0
-103.647 891.642 388.031 8.000000 2
178 442.325775 0
180 110.275826 0
4.14874 914.898 388.031 8.000000 3
179 110.275826 0
181 105.954399 0
112 373.309052 0
108.402 895.991 388.031 8.000000 2
180 105.954399 0
182 456.911224 0
533.099 909.273 220.031 8.000000 2
181 456.911224 0
183 100.888069 0
504.495 1006.02 220.031 8.000000 2
182 100.888069 0
184 343.774933 0
182.438 998.223 100.031 8.000000 2
172 139.185532 0
183 343.774933 0
119.147 1392.01 68.0312 8.000000 2
170 119.410660 0
186 76.163742 0
160.501 1455.97 68.0312 8.000000 2
185 76.163742 0
187 180.800430 0
341.175 1449.21 68.0312 8.000000 2
186 180.800430 0
188 93.192398 0
348.812 1356.33 68.0312 8.000000 2
187 93.192398 0
189 157.330383 0
505.633 1368.99 68.0312 8.000000 2
188 157.330383 0
190 371.182220 0
876.689 1375.92 74.7773 8.000000 2
189 371.182220 0
191 243.262238 0
1101.08 1312.67 5.32055 8.000000 2
190 243.262238 0
192 330.793091 0
1373.49 1125.05 9.38671 8.000000 2
191 330.793091 0
193 375.848969 0
1726.24 1110.7 -119.546 8.000000 2
192 375.848969 0
194 452.133820 0
2136.29 920.216 -117.962 8.000000 2
193 452.133820 0
195 324.018433 0
2306.36 644.417 -118.088 8.000000 2
194 324.018433 0
196 285.041931 0
2311.69 359.482 -123.8 8.000000 2
195 285.041931 0
197 228.409607 0
2458.29 184.522 -115.599 8.000000 2
196 228.409607 0
35 162.899399 0
2616.75 605.467 41.6398 8.000000 2
35 375.749176 0
34 155.609619 0
2126 -1057.08 564.031 8.000000 2
9 115.544685 0
200 152.569275 0
2125.52 -1056.03 716.596 8.000000 2
199 152.569275 0
201 26.105991 0
2124.4 -1044.58 740.031 8.000000 2
200 26.105991 0
202 128.246368 0
2126.14 -916.348 740.031 8.000000 2
201 128.246368 0
203 115.546761 0
2012.12 -935.105 740.031 8.000000 2
202 115.546761 0
204 67.967079 0
2019.09 -1002.71 740.031 8.000000 1
203 67.967079 0
-2578.46 -2043.24 -283.969 8.000000 3
206 57.274063 0
246 336.361603 0
248 196.900223 0
-2564.45 -2098.78 -283.969 8.000000 2
205 57.274063 0
207 179.004349 0
-2404.5 -2179.14 -283.969 8.000000 2
206 179.004349 0
208 350.700500 0
-2143.85 -2413.77 -283.969 8.000000 2
207 350.700500 0
209 259.681244 0
-1887.22 -2453.51 -283.969 8.000000 2
208 259.681244 0
210 241.765533 0
-1646.83 -2427.76 -283.969 8.000000 2
209 241.765533 0
211 708.121460 0
-1132.49 -1941.05 -283.969 8.000000 2
210 708.121460 0
212 269.292725 0
-1056.09 -1682.82 -283.969 8.000000 2
211 269.292725 0
213 230.420334 0
-1190.59 -1495.73 -283.969 8.000000 2
212 230.420334 0
214 128.309540 0
-1282.39 -1406.73 -273.21 8.000000 3
213 128.309540 0
215 250.887360 0
224 120.229668 0
-1288.67 -1156.82 -251.969 8.000000 2
214 250.887360 0
216 298.344757 0
-1228.71 -865.533 -275.731 8.000000 3
215 298.344757 0
217 466.218353 0
220 143.365555 0
-891.405 -543.793 -283.969 8.000000 2
216 466.218353 0
218 370.893768 0
-620.834 -290.113 -283.969 8.000000 2
217 370.893768 0
219 252.079315 0
-584.472 -40.6698 -283.969 8.000000 2
218 252.079315 0
150 120.368027 0
-1363.54 -817.495 -283.969 8.000000 2
216 143.365555 0
221 227.773697 0
-1590.52 -836.468 -283.969 8.000000 2
220 227.773697 0
222 211.751434 0
-1605.84 -1047.66 -283.969 8.000000 2
221 211.751434 0
223 242.027176 0
-1501.27 -1265.94 -283.969 8.000000 2
224 147.223068 0
222 242.027176 0
-1395.98 -1368.84 -283.969 8.000000 2
214 120.229668 0
223 147.223068 0
-823.446 -1706.47 -603.969 8.000000 2
226 128.628357 0
234 192.731842 0
-695.051 -1703.26 -596.906 8.000000 2
225 128.628357 0
227 210.232193 0
-502.303 -1700.69 -680.805 8.000000 2
226 210.232193 0
228 273.335602 0
-293.304 -1817.36 -812.79 8.000000 2
227 273.335602 0
229 222.304214 0
-82.2963 -1760.45 -853.485 8.000000 2
228 222.304214 0
230 340.824921 0
257.277 -1789.56 -855.535 8.000000 2
229 340.824921 0
231 171.428482 0
373.733 -1668.26 -822.176 8.000000 2
230 171.428482 0
232 256.297211 0
576.799 -1610.69 -676.786 8.000000 2
231 256.297211 0
233 287.930725 0
855.336 -1606.34 -603.969 8.000000 2
232 287.930725 0
85 124.719971 0
-881.689 -1890.19 -603.969 8.000000 2
225 192.731842 0
235 515.989319 0
-1234.59 -2266.63 -603.969 8.000000 2
234 515.989319 0
236 486.437653 0
-1590.29 -2598.44 -603.969 8.000000 2
235 486.437653 0
237 209.698624 0
-1777.15 -2693.6 -603.969 8.000000 2
236 209.698624 0
238 442.115753 0
-2218.72 -2715.64 -603.969 8.000000 2
237 442.115753 0
239 383.315002 0
-2533.74 -2497.25 -603.969 8.000000 3
238 383.315002 0
240 328.671356 0
242 62.260540 0
-2862.37 -2491.98 -603.969 8.000000 2
239 328.671356 0
241 345.539551 0
-3205.77 -2530.37 -603.969 8.000000 1
240 345.539551 0
-2579.56 -2539.4 -603.969 8.000000 2
239 62.260540 0
243 509.745331 0
-2574.22 -2578.97 -95.7894 8.000000 2
244 416.401306 0
242 509.745331 0
-2573.18 -2605.78 319.746 8.000000 2
243 416.401306 0
245 70.204689 0
-2579.22 -2620.93 388.031 8.000000 2
244 70.204689 0
128 87.881409 0
-2581.2 -1987.51 47.7325 8.000000 2
205 336.361603 0
247 289.147034 0
-2578.64 -1939.98 332.934 8.000000 2
246 289.147034 0
134 124.287392 0
-2765.49 -2104.81 -283.969 8.000000 2
205 196.900223 0
249 345.720673 0
-3110.01 -2076.01 -283.969 8.000000 1
248 345.720673 0
-505.487 538.722 -283.969 8.000000 2
149 161.469452 0
251 111.383087 0
-406.137 504.255 -247.256 8.000000 2
250 111.383087 0
252 358.608246 0
-118.631 345.271 -103.504 8.000000 2
251 358.608246 0
253 146.083832 0
26.2907 330.952 -91.9688 8.000000 1
252 146.083832 0
-611.737 -3.53098 -281.738 8.000000 2
255 340.710419 0
150 88.996536 0
-674.062 -282.11 -95.7461 8.000000 2
254 340.710419 0
256 468.932220 0
-985.431 -583.153 84.0314 8.000000 2
255 468.932220 0
257 269.196472 0
-1174.47 -774.809 84.0314 8.000000 2
256 269.196472 0
258 227.587662 0
-1360.26 -744.923 212.031 8.000000 2
257 227.587662 0
259 190.192062 0
-1549.8 -729.135 212.031 8.000000 2
258 190.192062 0
260 233.567413 0
-1667.45 -930.905 212.031 8.000000 2
259 233.567413 0
261 245.497818 0
-1641.33 -1175.01 212.031 8.000000 2
260 245.497818 0
262 204.003845 0
-1505.25 -1325.32 234.474 8.000000 2
261 204.003845 0
263 366.476349 0
-1231.16 -1543.25 342.569 8.000000 2
262 366.476349 0
264 162.972931 0
-1162.88 -1684.08 388.031 8.000000 2
263 162.972931 0
140 128.477371 0
-2051.17 426.982 -116.063 8.000000 2
157 133.739487 0
266 199.787338 0
-2141.94 604.928 -112.798 8.000000 2
265 199.787338 0
267 177.864059 0
-2307.37 669.895 -119.735 8.000000 2
266 177.864059 0
268 250.314850 0
-2536.64 667.416 -19.2964 8.000000 2
267 250.314850 0
269 240.210266 0
-2776.59 656.582 -16.9247 8.000000 2
268 240.210266 0
270 172.828674 0
-2948.69 667.379 -5.26624 8.000000 2
269 172.828674 0
271 185.468796 0
-3116.18 688.551 71.5264 8.000000 2
270 185.468796 0
272 138.464081 0
-3243.8 636.323 58.9537 8.000000 2
271 138.464081 0
273 138.695648 0
-3301.54 514.116 90.0627 8.000000 2
272 138.695648 0
274 154.958603 0
-3303.54 375.428 159.156 8.000000 2
273 154.958603 0
275 229.178238 0
-3371.18 156.459 158.783 8.000000 2
274 229.178238 0
276 290.115570 0
-3427.54 -126.852 185.711 8.000000 2
275 290.115570 0
277 252.884644 0
-3404.86 -378.653 180.031 8.000000 3
276 252.884644 0
278 146.987305 0
279 356.727417 0
-3258.23 -368.461 180.031 8.000000 1
277 146.987305 0
-3400.26 -722.19 276.031 8.000000 2
277 356.727417 0
280 342.171082 0
-3407.63 -1050.54 372.031 8.000000 2
279 342.171082 0
281 122.810600 0
-3286.85 -1072.76 372.031 8.000000 2
280 122.810600 0
282 391.467316 0
-3296.6 -693.368 468.031 8.000000 3
283 85.172729 0
304 81.387085 0
281 391.467316 0
-3346.44 -624.307 468.031 8.000000 2
282 85.172729 0
284 293.583588 0
-3343.98 -331.17 452.031 8.000000 2
283 293.583588 0
285 456.805817 0
-2887.17 -332.711 452.031 8.000000 3
284 456.805817 0
286 251.098801 0
305 165.568970 0
-2636.12 -337.757 452.031 8.000000 3
285 251.098801 0
287 303.737976 0
305 201.297577 0
-2332.49 -345.647 452.031 8.000000 2
286 303.737976 0
288 246.832901 0
-2326.66 -592.411 452.031 8.000000 2
287 246.832901 0
289 316.154266 0
-2331.15 -888.028 564.031 8.000000 2
288 316.154266 0
290 403.235474 0
-2334.85 -1291.25 564.031 8.000000 3
289 403.235474 0
291 118.895821 0
306 165.343277 0
-2453.59 -1297.34 564.031 8.000000 3
290 118.895821 0
292 182.993820 0
295 101.128189 0
-2469.8 -1115.06 564.031 8.000000 2
291 182.993820 0
293 265.298187 0
-2473.29 -867.767 468.031 8.000000 2
292 265.298187 0
294 226.280197 0
-2558.3 -658.063 468.031 8.000000 2
293 226.280197 0
133 235.561691 0
-2478.33 -1395.39 564.031 8.000000 2
291 101.128189 0
296 126.932907 0
-2482.38 -1519.97 588.031 8.000000 2
295 126.932907 0
297 93.999153 0
-2575.97 -1512.54 592.636 8.000000 2
296 93.999153 0
298 218.904037 0
-2577.86 -1508.71 811.498 8.000000 2
297 218.904037 0
299 214.041885 0
-2791.73 -1512.99 804.031 8.000000 2
298 214.041885 0
300 119.006035 0
-2789.09 -1631.97 804.031 8.000000 1
299 119.006035 0
-3015.23 -612.901 468.031 8.000000 2
302 138.250885 0
133 236.127731 0
-3135.8 -545.258 468.031 8.000000 2
301 138.250885 0
303 98.034035 0
-3233.81 -547.232 468.031 8.000000 2
302 98.034035 0
304 87.579376 0
-3240.32 -634.569 468.031 8.000000 2
303 87.579376 0
282 81.387085 0
-2785.08 -202.362 452.031 8.000000 2
285 165.568970 0
286 201.297577 0
-2220.5 -1171.82 564.031 8.000000 2
290 165.343277 0
307 115.962021 0
-2226.81 -1056.03 564.031 8.000000 2
306 115.962021 0
308 181.249512 0
-2226.46 -1055.94 745.28 8.000000 2
307 181.249512 0
309 132.389084 0
-2240.7 -924.428 740.031 8.000000 2
308 132.389084 0
310 131.387970 0
-2109.32 -925.149 740.031 8.000000 2
309 131.387970 0
311 76.683662 0
-2109.15 -1001.83 740.031 8.000000 1
310 76.683662 0
-3089.27 -1043.95 388.031 8.000000 2
132 303.612305 0
313 244.403152 0
-3093.99 -1288.31 388.031 8.000000 2
131 302.508179 0
312 244.403152 0
-2428.12 -1019.49 388.031 8.000000 2
132 358.043732 0
315 323.093384 0
-2437.09 -1342.46 388.031 8.000000 2
314 323.093384 0
316 143.239929 0
-2493.83 -1210.94 388.031 8.000000 2
315 143.239929 0
317 139.511200 0
-2633.28 -1206.8 388.031 8.000000 3
316 139.511200 0
132 228.118210 0
131 199.001495 0

View File

@ -0,0 +1,476 @@
155
2098.01 1478.62 -156 8.000000 3
1 391.809570 0
80 326.586365 0
113 371.508270 0
2098.45 1086.81 -156 8.000000 2
0 391.809570 0
2 319.457550 0
1919.73 822.03 -156 8.000000 2
1 319.457550 0
3 324.515137 0
1948.43 498.786 -156 8.000000 2
2 324.515137 0
4 273.347473 0
1979.29 227.187 -156 8.000000 2
3 273.347473 0
5 288.811005 0
1781.53 16.7011 -156 8.000000 2
4 288.811005 0
6 280.428955 0
1530.33 -107.955 -156 8.000000 2
5 280.428955 0
7 270.279694 0
1260.08 -112.002 -156 8.000000 3
6 270.279694 0
8 123.283096 0
78 472.132446 0
1212.04 -225.537 -156 8.000000 2
7 123.283096 0
9 197.616791 0
1171.55 -418.962 -156 8.000000 3
8 197.616791 0
10 290.041229 0
79 295.743256 0
919.245 -562.021 -156 8.000000 3
9 290.041229 0
11 208.715317 0
31 243.886566 0
899.365 -769.788 -156 8.000000 3
10 208.715317 0
12 212.556458 0
31 261.492981 0
955.967 -974.669 -156 8.000000 2
11 212.556458 0
13 148.479431 0
981.454 -1115.36 -115.969 8.000000 2
12 148.479431 0
14 570.827393 0
985.003 -1665.38 36.7228 8.000000 2
13 570.827393 0
15 128.785614 0
993.795 -1793.86 36.2877 8.000000 2
14 128.785614 0
16 121.002167 0
872.846 -1797.44 36.2877 8.000000 2
15 121.002167 0
17 459.042999 0
415.096 -1784.12 68.0312 8.000000 3
16 459.042999 0
18 180.815231 0
19 185.069839 0
408.565 -1964.81 68.0312 8.000000 1
17 180.815231 0
415.736 -1599.05 68.0312 8.000000 2
17 185.069839 0
20 257.007965 0
455.412 -1349.7 20.0312 8.000000 2
19 257.007965 0
21 387.813568 0
74.3868 -1355.66 -51.9688 8.000000 2
20 387.813568 0
22 189.711212 0
105.703 -1169.23 -67.9688 8.000000 2
21 189.711212 0
23 482.574036 0
581.416 -1088.15 -67.9688 8.000000 3
22 482.574036 0
24 202.977554 0
30 181.135605 0
594.846 -886.251 -51.9688 8.000000 2
23 202.977554 0
25 94.816368 0
500.031 -886.712 -51.9688 8.000000 2
24 94.816368 0
26 193.040268 0
500.031 -885.904 141.07 8.000000 2
25 193.040268 0
27 71.551086 0
528.226 -833.818 181.215 8.000000 2
26 71.551086 0
28 74.899956 0
599.952 -814.294 172.031 8.000000 2
27 74.899956 0
29 76.684647 0
605.048 -890.809 172.031 8.000000 1
28 76.684647 0
716.699 -1208.6 -67.9688 8.000000 1
23 181.135605 0
683.064 -622.843 -155.969 8.000000 3
10 243.886566 0
11 261.492981 0
32 225.770401 0
458.221 -602.4 -155.969 8.000000 2
31 225.770401 0
33 334.636536 0
129.072 -542.047 -155.969 8.000000 2
32 334.636536 0
34 466.016388 0
32.1925 -86.212 -155.969 8.000000 2
33 466.016388 0
35 401.177521 0
-81.6338 298.479 -155.969 8.000000 2
34 401.177521 0
36 421.292328 0
7.37337 710.261 -155.969 8.000000 2
35 421.292328 0
37 318.599731 0
17.6835 1028.69 -155.969 8.000000 2
36 318.599731 0
38 351.676086 0
-86.8564 1364.47 -155.969 8.000000 2
37 351.676086 0
39 317.846924 0
-384.4 1476.25 -155.969 8.000000 2
38 317.846924 0
40 386.384033 0
-770.515 1461.84 -155.969 8.000000 2
39 386.384033 0
41 274.876434 0
-1016.87 1583.77 -155.969 8.000000 2
40 274.876434 0
42 298.554688 0
-1308.76 1646.5 -155.969 8.000000 2
41 298.554688 0
43 296.173065 0
-1604.79 1655.61 -155.969 8.000000 3
42 296.173065 0
44 444.667664 0
74 358.809753 0
-2034.38 1540.8 -155.969 8.000000 3
43 444.667664 0
45 336.270264 0
74 405.639221 0
-2346.54 1415.75 -155.969 8.000000 2
44 336.270264 0
46 356.069550 0
-2383.71 1061.62 -155.969 8.000000 2
45 356.069550 0
47 294.423004 0
-2375.74 767.308 -155.969 8.000000 2
46 294.423004 0
48 142.459930 0
-2397.83 626.799 -147.969 8.000000 2
47 142.459930 0
49 381.490723 0
-2499.68 259.244 -155.969 8.000000 2
48 381.490723 0
50 299.009888 0
-2201.05 274.289 -155.969 8.000000 2
49 299.009888 0
51 204.216263 0
-2012.12 351.819 -155.969 8.000000 2
50 204.216263 0
52 550.291809 0
-2007.63 -192.608 -75.9688 8.000000 2
51 550.291809 0
53 256.260071 0
-2263.83 -198.085 -75.9688 8.000000 2
52 256.260071 0
54 437.879272 0
-2277.99 234.861 -11.9688 8.000000 2
53 437.879272 0
55 246.296844 0
-2266.87 480.907 -11.9688 8.000000 2
54 246.296844 0
56 148.007614 0
-2119.12 489.552 -11.9688 8.000000 2
55 148.007614 0
57 450.034851 0
-2129.37 939.47 -11.9688 8.000000 3
56 450.034851 0
58 357.826416 0
75 39.600018 0
-1771.58 944.208 -11.9688 8.000000 2
57 357.826416 0
59 626.751892 0
-1772.39 317.457 -11.9688 8.000000 2
58 626.751892 0
60 246.373718 0
-1526.13 310.151 -11.9688 8.000000 3
59 246.373718 0
61 527.395447 0
62 145.092941 0
-1520.88 837.277 4.0625 8.000000 1
60 527.395447 0
-1382.83 287.421 -11.9688 8.000000 2
60 145.092941 0
63 289.962616 0
-1109.25 291.901 -107.969 8.000000 2
62 289.962616 0
64 135.013245 0
-1100.99 157.141 -107.969 8.000000 2
63 135.013245 0
65 360.593597 0
-1448.56 153.922 -203.969 8.000000 2
64 360.593597 0
66 281.864349 0
-1724.61 208.549 -219.969 8.000000 2
65 281.864349 0
67 258.907593 0
-1717.94 467.371 -219.969 8.000000 3
66 258.907593 0
68 215.594452 0
72 250.415344 0
-1924.99 527.464 -219.969 8.000000 2
67 215.594452 0
69 180.139267 0
-1919.38 707.516 -219.969 8.000000 2
68 180.139267 0
70 205.068359 0
-1714.34 704.116 -219.969 8.000000 3
69 205.068359 0
71 248.284515 0
73 232.119446 0
-1466.15 697.344 -219.969 8.000000 2
70 248.284515 0
72 218.252594 0
-1467.8 479.097 -219.969 8.000000 2
71 218.252594 0
67 250.415344 0
-1701.4 935.874 -219.969 8.000000 2
70 232.119446 0
74 379.464722 0
-1700.87 1309.9 -155.969 8.000000 3
73 379.464722 0
43 358.809753 0
44 405.639221 0
-2129.74 979.069 -11.9688 8.000000 2
57 39.600018 0
76 77.381271 0
-2127.75 979.969 65.3817 8.000000 2
75 77.381271 0
77 66.613831 0
-2124.64 1045.65 76.0312 8.000000 1
76 66.613831 0
824.796 70.8451 -155.969 8.000000 2
7 472.132446 0
79 333.217621 0
932.842 -244.369 -155.969 8.000000 2
9 295.743256 0
78 333.217621 0
1789.95 1587.06 -155.969 8.000000 3
0 326.586365 0
81 427.194763 0
113 351.470276 0
1367.62 1581.01 -219.969 8.000000 2
80 427.194763 0
82 220.674576 0
1146.98 1584.46 -219.969 8.000000 3
81 220.674576 0
83 230.303360 0
84 226.654877 0
1137.78 1814.58 -219.969 8.000000 2
82 230.303360 0
86 168.936844 0
1147.48 1357.81 -219.969 8.000000 2
82 226.654877 0
85 250.837265 0
896.671 1361.31 -219.969 8.000000 2
84 250.837265 0
87 245.776947 0
968.851 1812.91 -219.969 8.000000 1
83 168.936844 0
802.355 1588.27 -219.969 8.000000 2
85 245.776947 0
88 196.677139 0
612.752 1536 -219.969 8.000000 2
87 196.677139 0
89 250.052750 0
603.914 1286.61 -203.969 8.000000 2
88 250.052750 0
90 313.929260 0
600.437 987.744 -107.969 8.000000 2
89 313.929260 0
91 135.072433 0
735.426 983.008 -107.969 8.000000 2
90 135.072433 0
92 328.464478 0
744.011 1297.01 -11.9687 8.000000 2
91 328.464478 0
93 122.017708 0
745.986 1419.01 -11.9687 8.000000 3
92 122.017708 0
94 515.118042 0
95 253.444260 0
1261.03 1410.46 -11.9687 8.000000 1
93 515.118042 0
788.381 1668.89 -11.9687 8.000000 2
93 253.444260 0
96 598.714905 0
1387.08 1665.16 -11.9687 8.000000 2
95 598.714905 0
97 352.339874 0
1387.24 2017.5 -11.9687 8.000000 3
96 352.339874 0
98 468.809906 0
114 40.793037 0
918.466 2011.92 -11.9687 8.000000 2
97 468.809906 0
99 158.713120 0
924.244 2170.53 -11.9687 8.000000 2
98 158.713120 0
100 260.873688 0
663.392 2167.14 -11.9687 8.000000 2
99 260.873688 0
101 415.179657 0
253.237 2159.99 -75.9688 8.000000 2
100 415.179657 0
102 251.335678 0
277.614 1909.84 -75.9688 8.000000 2
101 251.335678 0
103 500.201050 0
771.277 1899.98 -155.969 8.000000 2
102 500.201050 0
104 199.855530 0
765.444 2099.75 -155.969 8.000000 2
103 199.855530 0
105 84.059311 0
681.891 2108.96 -155.969 8.000000 3
104 84.059311 0
106 105.004784 0
107 272.760681 0
577.466 2097.94 -155.969 8.000000 1
105 105.004784 0
696.838 2381.31 -155.969 8.000000 3
105 272.760681 0
108 121.956619 0
109 376.794159 0
574.885 2382.22 -155.969 8.000000 1
107 121.956619 0
1061.91 2288.39 -147.969 8.000000 2
107 376.794159 0
110 195.581863 0
1256.54 2270.92 -155.969 8.000000 2
109 195.581863 0
111 351.205780 0
1603.3 2326.65 -155.969 8.000000 2
110 351.205780 0
112 422.276306 0
1959.34 2099.59 -155.969 8.000000 2
111 422.276306 0
113 265.321716 0
2029.94 1843.84 -155.969 8.000000 3
112 265.321716 0
0 371.508270 0
80 351.470276 0
1427.97 2019.41 -10.636 8.000000 2
97 40.793037 0
115 115.642601 0
1437.44 2017.27 104.598 8.000000 2
114 115.642601 0
116 72.699219 0
1504.25 2015.06 76.0312 8.000000 1
115 72.699219 0
-1565.94 1583.62 -1115.97 8.000000 2
118 203.180847 0
139 57.129642 0
-1556.51 1380.66 -1115.97 8.000000 3
117 203.180847 0
119 188.093918 0
120 144.948639 0
-1559.67 1192.59 -1115.97 8.000000 2
118 188.093918 0
147 162.501968 0
-1411.73 1387.51 -1115.97 8.000000 2
118 144.948639 0
121 158.044296 0
-1253.69 1389.5 -1115.97 8.000000 2
120 158.044296 0
122 287.619690 0
-966.539 1386.23 -1131.97 8.000000 2
121 287.619690 0
123 192.003372 0
-776.299 1406.68 -1115.97 8.000000 2
122 192.003372 0
124 356.135651 0
-420.173 1404.12 -1115.97 8.000000 2
123 356.135651 0
125 363.008057 0
-161.708 1149.22 -1115.97 8.000000 2
124 363.008057 0
126 370.157288 0
-159.229 779.073 -1115.97 8.000000 2
125 370.157288 0
127 745.555115 0
-390.395 81.4059 -990.769 8.000000 2
126 745.555115 0
128 850.493958 0
-398.659 -769.043 -987.969 8.000000 2
127 850.493958 0
129 231.037155 0
-396.537 -1000.07 -987.969 8.000000 2
128 231.037155 0
130 321.200806 0
-75.5162 -1010.81 -987.969 8.000000 2
129 321.200806 0
131 185.354767 0
109.527 -1021.57 -987.969 8.000000 3
130 185.354767 0
132 148.385513 0
133 152.718048 0
251.436 -978.206 -987.969 8.000000 2
131 148.385513 0
135 119.224113 0
246.429 -1089.24 -987.969 8.000000 2
134 138.863327 0
131 152.718048 0
385.292 -1089.72 -987.969 8.000000 1
133 138.863327 0
255.969 -975.926 -868.853 8.000000 2
132 119.224113 0
136 54.134266 0
270.022 -976.189 -816.575 8.000000 2
135 54.134266 0
137 126.673668 0
396.168 -974.291 -827.969 8.000000 2
136 126.673668 0
138 46.633835 0
390.273 -928.031 -827.969 8.000000 1
137 46.633835 0
-1564.72 1753.77 -1109.76 8.000000 2
117 57.129642 0
140 2235.308105 0
-1860.93 -24.3595 212.031 8.000000 1
141 194.149292 0
-1868.14 169.656 212.031 8.000000 2
140 194.149292 0
142 44.666622 0
-1824.03 162.591 212.031 8.000000 2
141 44.666622 0
143 32.814236 6
-1811.25 158.924 242.031 8.000000 2
142 32.814236 0
144 73.468681 0
-1737.78 158.433 242.031 8.000000 2
143 73.468681 0
145 212.153015 0
-1696.03 157.175 34.0312 8.000000 2
144 212.153015 0
146 71.978020 0
-1624.29 163.012 34.0312 8.000000 2
145 71.978020 0
60 182.761047 0
-1568.6 1030.59 -1125.02 8.000000 2
119 162.501968 0
148 2498.165527 0
416.002 1747.87 212.031 8.000000 1
149 197.695648 0
613.431 1758.13 212.031 8.000000 2
148 197.695648 0
150 46.108490 0
612.371 1712.03 212.031 8.000000 2
149 46.108490 0
151 32.539349 6
610.228 1699.61 242.031 8.000000 2
150 32.539349 0
152 80.112778 0
608.729 1619.51 242.031 8.000000 2
151 80.112778 0
153 192.139786 0
608.429 1590.92 52.0312 8.000000 2
152 192.139786 0
154 84.218468 0
610.285 1508.67 34.0312 8.000000 2
153 84.218468 0
93 169.022690 0

View File

@ -0,0 +1,257 @@
75
-96 -32 48 32.000000 4
23 327.088409 0
11 230.497589 0
21 269.282532 0
15 269.596619 0
-1241.15 705.316 180.031 8.000000 1
2 232.375793 0
-1471.29 709.06 148.031 32.000000 2
1 232.375793 0
3 285.312927 0
-1473.88 423.759 148.031 16.000000 2
2 285.312927 0
4 137.971420 0
-1481.06 286.906 132.031 32.000000 3
3 137.971420 0
5 58.832630 0
63 36.487289 0
-1425.59 306.534 132.031 8.000000 2
4 58.832630 0
6 339.963318 0
-1099.55 299.136 36.0312 32.000000 2
5 339.963318 0
7 126.922203 0
-1006.38 212.949 36.0312 16.000000 3
6 126.922203 0
8 232.209442 0
56 133.715286 0
-924.383 -4.30183 36.0312 32.000000 5
7 232.209442 0
9 145.993362 0
53 235.448639 0
56 228.463562 0
74 353.002930 0
-778.49 1.08755 36.0312 48.000000 2
8 145.993362 0
10 182.582352 0
-595.927 3.75444 36.0312 48.000000 5
9 182.582352 0
11 273.240387 0
14 320.207031 0
22 480.411224 0
12 224.743332 0
-322.716 7.81872 36.0312 64.000000 4
10 273.240387 0
0 230.497589 0
14 213.038528 0
22 288.193359 0
-549.644 -216.013 44.3735 64.000000 2
10 224.743332 0
22 365.719299 0
-589.045 257.289 45.9577 8.000000 0
-357.893 217.933 36.0312 64.000000 3
15 303.240997 0
10 320.207031 0
11 213.038528 0
-55.0888 234.206 36.0312 64.000000 4
16 266.632751 0
14 303.240997 0
23 396.041840 0
0 269.596619 0
211.537 232.243 36.0312 64.000000 4
18 480.576447 0
17 370.380219 0
15 266.632751 0
23 272.818359 0
581.738 229.401 47.1826 8.000000 2
18 243.065979 0
16 370.380219 0
627.097 -9.13431 36.0312 48.000000 5
24 160.181305 0
20 338.396759 0
23 397.515259 0
16 480.576447 0
17 243.065979 0
622.232 -214.57 46.4111 48.000000 0
391.679 -252.206 38.6298 64.000000 3
18 338.396759 0
21 322.148438 0
23 266.406952 0
69.6462 -243.97 36.0312 64.000000 3
22 254.857559 0
20 322.148438 0
0 269.282532 0
-185.207 -245.453 36.0312 64.000000 4
10 480.411224 0
21 254.857559 0
11 288.193359 0
12 365.719299 0
230.774 -39.8959 36.0312 64.000000 5
18 397.515259 0
0 327.088409 0
15 396.041840 0
20 266.406952 0
16 272.818359 0
787.166 -3.12172 36.0312 32.000000 2
25 140.164856 0
18 160.181305 0
927.251 1.59936 36.0312 32.000000 5
40 229.411942 0
24 140.164856 0
26 203.234833 0
45 219.766571 0
41 212.362335 0
937.013 -201.401 36.0312 32.000000 3
25 203.234833 0
27 198.916199 0
45 206.908463 0
1109.03 -301.294 36.0312 32.000000 2
26 198.916199 0
28 379.267578 0
1475.94 -302.698 132.031 16.000000 3
27 379.267578 0
32 191.768646 0
29 101.320961 0
1473.79 -402.725 148.031 16.000000 2
28 101.320961 0
30 303.728943 0
1474.21 -706.454 148.031 16.000000 1
29 303.728943 0
1274.74 -694.748 180.031 48.000000 1
30 202.352936 0
1491.18 -114.233 164.031 32.000000 3
28 191.768646 0
33 220.672516 0
48 147.541031 0
1488.03 106.417 164.031 32.000000 3
32 220.672516 0
34 192.194473 0
48 141.968338 0
1481.84 295.828 132.031 16.000000 3
33 192.194473 0
35 89.717255 0
38 103.539665 0
1473.04 383.667 148.031 16.000000 2
34 89.717255 0
36 323.088684 0
1467.85 706.714 148.031 32.000000 1
35 323.088684 0
1254.37 704.892 180.031 48.000000 1
36 215.868835 0
1379.12 302.671 121.017 32.000000 2
34 103.539665 0
39 288.959717 0
1102.94 303.6 36.0312 32.000000 2
38 288.959717 0
40 173.103500 0
946.153 230.231 36.0312 32.000000 3
41 204.419312 0
25 229.411942 0
39 173.103500 0
1110.58 108.779 36.0312 32.000000 3
42 214.018356 0
40 204.419312 0
25 212.362335 0
1324.5 115.165 36.0312 32.000000 3
47 185.500381 0
41 214.018356 0
43 164.353683 0
1398.96 -31.3594 36.0312 48.000000 2
44 145.270950 0
42 164.353683 0
1292.39 -130.087 36.0312 32.000000 3
45 174.520615 0
43 145.270950 0
46 222.326721 0
1119.77 -104.391 36.0312 32.000000 3
25 219.766571 0
26 206.908463 0
44 174.520615 0
1482.43 -245.464 36.0312 48.000000 1
44 222.326721 0
1462.45 239.188 36.0312 48.000000 1
42 185.500381 0
1395.89 -1.59051 164.031 32.000000 3
49 266.534149 0
32 147.541031 0
33 141.968338 0
1137.18 2.19865 228.031 32.000000 2
50 243.991821 0
48 266.534149 0
893.188 1.77796 228.031 48.000000 3
49 243.991821 0
52 209.302094 0
51 212.115616 0
852.79 210.011 228.031 16.000000 1
50 212.115616 0
847.677 -202.516 228.031 16.000000 1
50 209.302094 0
-1123.05 -130.667 36.0312 16.000000 2
54 183.414429 0
8 235.448639 0
-1306.46 -129.434 36.0312 32.000000 3
59 225.460464 0
57 163.450302 0
53 183.414429 0
-1303.87 148.572 36.0312 32.000000 3
58 214.804306 0
57 180.277115 0
56 194.719345 0
-1110.18 128.652 36.0312 16.000000 3
55 194.719345 0
8 228.463562 0
7 133.715286 0
-1406.14 0.105439 36.0312 48.000000 2
54 163.450302 0
55 180.277115 0
-1484.68 264.548 36.0312 64.000000 1
55 214.804306 0
-1475.2 -278.968 36.0312 48.000000 1
54 225.460464 0
-1489.58 -235.583 132.031 16.000000 2
61 139.750656 0
70 62.761868 0
-1490.65 -99.5498 164.031 32.000000 3
64 148.224228 0
60 139.750656 0
62 221.824692 0
-1493.44 122.257 164.031 32.000000 3
64 155.186874 0
63 135.291916 0
61 221.824692 0
-1496.14 253.683 132.031 16.000000 2
62 135.291916 0
4 36.487289 0
-1388.54 7.89177 164.031 32.000000 3
65 254.501846 0
61 148.224228 0
62 155.186874 0
-1142.22 7.25276 228.031 32.000000 2
66 244.740936 0
64 254.501846 0
-897.489 4.97487 228.031 48.000000 3
68 224.928955 0
67 225.633316 0
65 244.740936 0
-836.502 -212.26 228.031 16.000000 1
66 225.633316 0
-827.363 218.693 228.031 16.000000 1
66 224.928955 0
-1406.86 -303.306 132.031 16.000000 2
70 72.241402 0
74 312.661713 0
-1478.86 -297.423 132.031 16.000000 3
60 62.761868 0
71 88.342003 0
69 72.241402 0
-1469.81 -383.832 148.031 16.000000 2
70 88.342003 0
72 315.275818 0
-1471.93 -699.101 148.031 32.000000 1
71 315.275818 0
-1258.07 -694.383 180.031 48.000000 1
72 216.290100 0
-1109.3 -304.993 36.0312 32.000000 2
8 353.002930 0
69 312.661713 0

View File

@ -0,0 +1,687 @@
221
1342.79 2304.53 540.031 8.000000 1
1 94.414688 0
1272.49 2241.5 540.031 8.000000 2
0 94.414688 0
2 70.880180 0
1312.27 2182.84 540.031 8.000000 2
1 70.880180 0
4 99.912514 0
1370.9 2111.2 540.031 8.000000 1
220 79.241211 0
1372.81 2132.03 478.905 8.000000 2
5 418.882568 0
3 64.607407 0
1370.09 2132.03 60.0312 16.000000 3
4 418.882568 0
6 192.061234 0
8 290.442413 0
1198.61 2218.54 60.0312 32.000000 3
5 192.061234 0
7 405.251099 0
8 447.075989 0
737.187 2215.1 60.0312 32.000000 4
6 405.251099 0
78 450.168274 0
79 586.804871 0
174 198.587051 0
1645.66 2223.79 60.0312 32.000000 3
9 191.111221 0
6 447.075989 0
5 290.442413 0
1620.73 2413.26 60.0312 32.000000 2
10 160.338242 0
8 191.111221 0
1598.21 2572.01 60.0312 32.000000 2
9 160.338242 0
11 172.672195 0
1660.69 2732.99 60.0312 16.000000 3
10 172.672195 0
12 201.457581 0
38 292.213928 0
1691.94 2932.01 60.0312 16.000000 2
11 201.457581 0
13 313.715454 0
1655.64 3243.61 60.0312 16.000000 2
12 313.715454 0
14 148.971191 0
1506.87 3251.45 60.0312 32.000000 2
13 148.971191 0
15 524.655945 0
993.553 3240.75 167.976 32.000000 2
14 524.655945 0
16 127.463455 0
866.185 3243.57 172.031 32.000000 3
15 127.463455 0
17 301.444000 0
28 133.400635 0
845.753 3544.32 172.031 32.000000 2
16 301.444000 0
18 165.133514 0
681.852 3564.46 172.031 32.000000 4
17 165.133514 0
19 213.603378 0
21 229.617310 0
24 106.166168 0
468.258 3562.49 172.031 16.000000 2
18 213.603378 0
20 300.279144 0
460.703 3262.3 172.031 16.000000 2
19 300.279144 0
193 413.303864 0
681.07 3794.08 172.031 16.000000 2
18 229.617310 0
22 401.039307 0
280.149 3784.32 172.031 16.000000 2
21 401.039307 0
23 98.201233 0
181.957 3782.95 172.031 16.000000 2
22 98.201233 0
218 41.924290 2
640.797 3466.65 176.323 32.000000 2
18 106.166168 0
25 412.336212 0
677.06 3077.27 307.048 32.000000 2
24 412.336212 0
26 163.056320 0
682.498 2919.54 348.031 32.000000 3
25 163.056320 0
27 188.219269 0
185 231.576767 0
621.494 2741.48 348.031 32.000000 2
26 188.219269 0
185 169.836151 0
817.043 3119.55 172.031 16.000000 2
16 133.400635 0
29 131.126785 0
811.753 2988.53 172.031 16.000000 2
28 131.126785 0
30 269.962128 0
566.122 2987.53 60.0312 16.000000 2
29 269.962128 0
31 193.398651 0
564.774 2794.8 44.0312 32.000000 3
30 193.398651 0
32 143.776520 0
33 153.009521 0
623.638 2663.63 44.0312 32.000000 1
31 143.776520 0
717.625 2787.85 44.0312 16.000000 3
31 153.009521 0
34 124.716934 0
164 111.226746 0
832.319 2738.86 44.0312 16.000000 2
33 124.716934 0
35 148.474304 0
947.118 2646.07 60.0312 16.000000 2
34 148.474304 0
36 304.557800 0
1194.52 2468.45 60.0312 16.000000 2
35 304.557800 0
37 229.795273 0
1196.21 2698.24 60.0312 16.000000 2
36 229.795273 0
38 176.841248 0
1368.52 2737.99 60.0312 16.000000 2
37 176.841248 0
11 292.213928 0
971.195 1390.71 60.0312 32.000000 2
79 269.617340 0
40 408.463318 0
931.281 984.91 36.0312 32.000000 2
39 408.463318 0
41 277.514648 0
932.658 707.398 36.0312 32.000000 3
40 277.514648 0
42 459.938904 0
155 222.995697 0
649.601 344.876 36.0312 48.000000 3
43 212.318375 0
41 459.938904 0
80 507.919098 0
562.039 151.454 36.0312 32.000000 2
42 212.318375 0
44 171.146271 0
553.089 -19.0359 24.0312 32.000000 3
43 171.146271 0
45 223.521072 0
166 166.191727 0
560.6 -242.108 36.0312 32.000000 2
44 223.521072 0
46 301.122101 0
716.112 -499.966 36.0312 32.000000 3
45 301.122101 0
47 281.334930 0
82 435.115387 0
920.468 -693.326 36.0312 32.000000 2
46 281.334930 0
48 190.079163 0
987.242 -871.29 36.0312 32.000000 2
47 190.079163 0
49 181.988312 0
944.763 -1048.25 36.0312 32.000000 2
48 181.988312 0
50 419.856598 0
865.505 -1460.56 36.0312 32.000000 2
49 419.856598 0
51 216.551788 0
757.753 -1648.4 36.0312 32.000000 2
50 216.551788 0
52 283.174713 0
575.966 -1865.52 36.0312 32.000000 2
51 283.174713 0
53 288.568726 0
458.362 -2129.04 36.0312 32.000000 2
52 288.568726 0
54 303.854858 0
366.903 -2418.58 47.4196 32.000000 2
53 303.854858 0
55 237.265823 0
249.366 -2624.3 60.0312 32.000000 3
54 237.265823 0
56 496.021576 0
144 170.095428 0
-243.737 -2570.57 60.0312 32.000000 2
55 496.021576 0
57 490.904663 0
-598.42 -2231.18 60.0312 32.000000 4
56 490.904663 0
58 707.128479 0
84 276.977448 0
120 515.543945 0
-971.099 -1630.23 60.0312 32.000000 2
57 707.128479 0
59 337.466003 0
-984.309 -1293.02 60.0312 32.000000 2
58 337.466003 0
60 488.145081 0
-934.69 -807.998 36.0312 32.000000 2
59 488.145081 0
61 291.864746 0
-863.815 -524.869 36.0312 32.000000 3
60 291.864746 0
62 436.319214 0
145 260.340118 0
-482.586 -312.645 36.0312 32.000000 3
61 436.319214 0
63 179.294327 0
83 366.459106 0
-504.924 -134.747 36.0312 32.000000 2
62 179.294327 0
64 141.078171 0
-545.888 -0.281944 24.0312 16.000000 3
63 141.078171 0
65 252.438141 0
170 342.531189 0
-604.056 245.07 36.0312 32.000000 2
64 252.438141 0
66 174.685318 0
-611.17 419.61 36.0312 32.000000 3
65 174.685318 0
67 288.255341 0
81 339.187347 0
-841.697 592.667 36.0312 32.000000 2
66 288.255341 0
68 238.784973 0
-971.716 792.95 36.0312 32.000000 2
67 238.784973 0
69 220.861298 0
-969.356 1013.8 36.0312 32.000000 2
68 220.861298 0
70 239.831726 0
-899.117 1243.11 36.0312 32.000000 2
69 239.831726 0
71 202.530869 0
-880.095 1444.75 36.0312 32.000000 2
70 202.530869 0
72 245.237900 0
-788.102 1672.08 36.0312 32.000000 2
71 245.237900 0
73 251.289856 0
-607.131 1846.42 36.0312 32.000000 2
72 251.289856 0
74 370.794922 0
-439.628 2177.23 36.0312 32.000000 2
73 370.794922 0
75 337.845428 0
-343.166 2500.77 48.4055 32.000000 3
74 337.845428 0
76 253.231598 0
216 238.995361 0
-116.87 2613.83 60.0312 32.000000 3
75 253.231598 0
77 310.366058 0
216 310.953400 0
193.259 2601.69 60.0312 32.000000 2
76 310.366058 0
78 258.872498 0
413.183 2465.13 60.0312 32.000000 3
77 258.872498 0
7 450.168274 0
174 368.020111 0
876.843 1643.28 60.0312 32.000000 2
7 586.804871 0
39 269.617340 0
142.261 369.127 36.0312 32.000000 2
81 456.962860 0
42 507.919098 0
-288.073 522.84 36.0312 32.000000 2
66 339.187347 0
80 456.962860 0
293.292 -602.672 36.0312 32.000000 2
83 463.627289 0
46 435.115387 0
-130.825 -415.387 36.0312 32.000000 2
62 366.459106 0
82 463.627289 0
-807.475 -2412.87 60.0312 32.000000 2
57 276.977448 0
85 277.184937 0
-1084.66 -2412.83 60.0312 16.000000 2
84 277.184937 0
86 140.941940 0
-1083.8 -2416.03 200.934 16.000000 2
85 140.941940 0
87 54.103931 0
-1094.45 -2430.28 252.031 8.000000 2
86 54.103931 0
88 82.815239 0
-1146.4 -2494.77 252.031 16.000000 2
87 82.815239 0
89 202.933197 0
-973.414 -2600.88 252.031 16.000000 2
88 202.933197 0
90 37.502594 2
-960.328 -2610.08 288.031 8.000000 2
89 37.502594 0
91 28.660358 0
-944.268 -2627.01 288.031 8.000000 2
90 28.660358 0
92 38.760796 2
-934.333 -2648.8 324.031 8.000000 2
91 38.760796 0
93 60.912804 0
-894.925 -2671.58 342.497 8.000000 2
92 60.912804 0
94 172.098343 0
-733.958 -2732.21 348.031 16.000000 1
95 159.921204 0
-683.142 -2883.84 348.031 32.000000 2
94 159.921204 0
96 121.916466 0
-682.019 -3004.47 330.382 32.000000 2
95 121.916466 0
97 574.799927 0
-640.493 -3555.47 172.031 32.000000 4
96 574.799927 0
98 232.367081 0
99 186.942200 0
102 74.194435 0
-872.764 -3548.81 172.031 32.000000 2
97 232.367081 0
106 309.755859 0
-453.551 -3554.97 172.031 8.000000 2
97 186.942200 0
100 288.600220 0
-459.009 -3266.42 172.031 16.000000 2
99 288.600220 0
101 479.463013 0
20.4185 -3272.21 172.031 16.000000 2
100 479.463013 0
124 71.724716 0
-678.929 -3618.93 172.031 16.000000 2
97 74.194435 0
103 172.211243 0
-679.249 -3791.14 172.031 32.000000 2
102 172.211243 0
104 341.194122 0
-338.247 -3779.71 172.031 32.000000 2
103 341.194122 0
105 159.523682 0
-178.724 -3779.22 172.031 32.000000 2
104 159.523682 0
219 40.346523 2
-840.773 -3240.71 172.031 32.000000 3
98 309.755859 0
107 258.928345 0
123 400.058075 0
-814.63 -2983.11 172.031 8.000000 2
106 258.928345 0
108 278.351074 0
-559.847 -2987.65 60.0312 8.000000 2
107 278.351074 0
109 130.042694 0
-560.082 -2858.6 44.0312 8.000000 3
108 130.042694 0
110 116.169357 0
154 95.427795 0
-618.991 -2758.47 44.0312 8.000000 2
109 116.169357 0
111 151.443039 0
-768.479 -2782.73 44.0312 8.000000 2
110 151.443039 0
112 175.531998 0
-908.99 -2678.75 60.0312 8.000000 2
111 175.531998 0
113 352.669128 0
-1187.29 -2462.13 60.0312 8.000000 2
112 352.669128 0
114 236.723816 0
-1191.71 -2698.81 60.0312 8.000000 2
113 236.723816 0
115 167.038162 0
-1354.53 -2736.11 60.0312 8.000000 2
114 167.038162 0
116 307.319489 0
-1661.84 -2733.23 60.0312 32.000000 3
115 307.319489 0
117 162.140579 0
121 233.056580 0
-1603.22 -2582.06 60.0312 32.000000 2
116 162.140579 0
118 381.237030 0
-1674.46 -2207.53 60.0312 32.000000 2
117 381.237030 0
119 300.359558 0
-1374.22 -2215.95 60.0312 32.000000 3
118 300.359558 0
120 260.418152 0
187 83.956406 0
-1113.9 -2223.37 60.0312 32.000000 2
119 260.418152 0
57 515.543945 0
-1688.06 -2964.81 60.0312 32.000000 2
116 233.056580 0
122 299.543823 0
-1629.65 -3258.6 60.0312 32.000000 2
121 299.543823 0
123 396.955475 0
-1236.39 -3248.62 113.145 32.000000 2
122 396.955475 0
106 400.058075 0
80.0946 -3312 172.031 16.000000 3
101 71.724716 0
125 124.616211 0
131 84.535889 0
204.711 -3312 172.031 16.000000 2
124 124.616211 0
126 152.574631 0
351.969 -3272.07 172.031 8.000000 2
125 152.574631 0
127 37.162968 4
384.482 -3271.99 154.031 8.000000 2
126 37.162968 0
128 37.581142 4
422.061 -3271.66 154.031 8.000000 2
127 37.581142 0
129 182.531372 0
420.115 -3089.14 154.031 8.000000 2
128 182.531372 0
130 51.165234 0
471.222 -3091.58 154.031 8.000000 1
206 222.002457 0
137.969 -3251.71 159.293 8.000000 2
132 115.261826 0
186 29.311090 0
137.969 -3252.01 44.0312 8.000000 2
131 115.261826 0
133 108.923538 0
35.0131 -3287.57 44.0312 8.000000 3
132 108.923538 0
134 173.452988 0
136 144.011795 0
207.282 -3307.8 44.0312 8.000000 2
133 173.452988 0
135 66.151581 0
200.865 -3241.96 44.0312 8.000000 1
134 66.151581 0
32.178 -3431.56 44.0312 8.000000 2
133 144.011795 0
137 347.313416 0
29.7828 -3778.86 44.0312 8.000000 3
136 347.313416 0
138 392.605438 0
139 285.596649 0
-362.774 -3785.04 44.0312 8.000000 1
137 392.605438 0
315.319 -3784.74 44.0312 8.000000 2
140 341.075256 0
137 285.596649 0
214.343 -3464.87 -17.7658 8.000000 2
141 320.794922 0
139 341.075256 0
525.656 -3424.77 -83.9933 8.000000 3
140 320.794922 0
142 407.669952 0
206 314.686951 0
528.5 -2984.5 -104.361 8.000000 3
141 407.669952 0
143 414.515930 0
206 133.718811 0
467.195 -2614.82 -68.3424 8.000000 2
142 414.515930 0
144 123.690994 0
418.525 -2614.15 45.3688 8.000000 2
143 123.690994 0
55 170.095428 0
-1111.71 -604.389 36.0312 16.000000 2
61 260.340118 0
146 139.864746 0
-1250.42 -586.431 36.0312 16.000000 2
145 139.864746 0
147 96.493866 0
-1297.35 -528.031 -24.7822 8.000000 2
148 387.189758 0
204 76.149467 0
-1295.78 -528.031 -411.969 8.000000 2
149 611.090393 0
147 387.189758 0
-684.873 -542.794 -411.969 8.000000 2
148 611.090393 0
150 1192.876831 0
-684.615 -1735.67 -411.969 8.000000 2
149 1192.876831 0
151 1147.029053 0
-693.068 -2882.67 -411.787 8.000000 2
150 1147.029053 0
152 67.295265 0
-668.031 -2882.97 -349.324 8.000000 2
151 67.295265 0
153 349.454834 0
-668.031 -2883.48 0.130906 8.000000 2
152 349.454834 0
154 46.664841 0
-652.208 -2883.48 44.0312 8.000000 2
153 46.664841 0
109 95.427795 0
1123.87 592.653 36.0312 32.000000 2
41 222.995697 0
156 134.621307 0
1257.45 575.994 36.0312 16.000000 2
155 134.621307 0
157 71.629669 0
1295.42 528.031 -1.23212 8.000000 2
159 410.738098 0
158 72.689796 0
1290.9 465.784 36.0312 8.000000 1
155 209.748245 0
1296.52 528.031 -411.969 8.000000 2
160 613.847412 0
157 410.738098 0
682.893 544.482 -411.969 8.000000 2
159 613.847412 0
161 1180.662231 0
684.029 1725.14 -411.969 8.000000 2
160 1180.662231 0
162 1158.985840 0
685.089 2884.13 -411.969 8.000000 2
161 1158.985840 0
163 102.580513 0
668.031 2881.65 -310.847 8.000000 2
162 102.580513 0
164 315.952728 0
668.031 2879.48 5.09842 8.000000 2
163 315.952728 0
165 42.117962 0
652.017 2878.17 44.0312 8.000000 2
164 42.117962 0
31 120.673477 0
718.52 -3.15244 24.0071 32.000000 2
44 166.191727 0
167 379.854492 0
1097.92 -21.7193 24.0071 32.000000 2
166 379.854492 0
168 254.427841 0
1325.99 -134.493 24.0071 32.000000 2
167 254.427841 0
169 339.726593 0
1402.52 -465.487 24.0071 16.000000 1
168 339.726593 0
-888.134 13.7009 24.0312 16.000000 2
64 342.531189 0
171 217.610794 0
-1105.73 11.5988 24.0312 16.000000 2
170 217.610794 0
172 251.449051 0
-1324.09 136.286 24.0312 16.000000 2
171 251.449051 0
173 352.232880 0
-1396.48 480.999 24.0312 16.000000 1
172 352.232880 0
778.686 2422.16 60.0312 32.000000 3
7 198.587051 0
175 306.339813 0
78 368.020111 0
1084.93 2414.61 60.0312 16.000000 2
174 306.339813 0
176 139.264679 0
1084.79 2414.72 199.296 16.000000 2
175 139.264679 0
177 55.796314 0
1095.02 2429.81 252.031 16.000000 2
176 55.796314 0
178 59.568783 0
1131.51 2476.89 252.031 16.000000 2
177 59.568783 0
179 200.804901 0
974.589 2602.18 252.031 16.000000 2
178 200.804901 0
180 40.701660 2
960.868 2615.31 288.031 16.000000 2
179 40.701660 0
181 21.220478 0
947.177 2631.52 288.031 16.000000 2
180 21.220478 0
182 39.213974 2
945.718 2647 324.031 16.000000 2
181 39.213974 0
183 62.588917 0
894.839 2674.43 348.031 16.000000 2
182 62.588917 0
184 98.178780 0
809.288 2706.44 384.031 16.000000 2
183 98.178780 0
185 41.959618 0
789.084 2713.95 348.031 16.000000 3
184 41.959618 2
26 231.576767 0
27 169.836151 0
164.205 -3254.63 172.031 8.000000 2
125 70.226357 0
126 188.572067 0
-1367.83 -2132.24 60.0312 8.000000 2
119 83.956406 0
188 430.635223 0
-1368.89 -2132.03 490.665 8.000000 2
187 430.635223 0
189 52.388279 0
-1369.92 -2114.53 540.031 8.000000 1
190 50.133530 0
-1322.32 -2098.79 540.031 8.000000 1
191 74.375015 0
-1299.47 -2169.57 540.031 8.000000 3
192 136.715561 0
190 74.375015 0
188 93.082497 0
-1331.95 -2302.37 540.031 8.000000 1
191 136.715561 0
47.3991 3261.79 172.031 8.000000 2
20 413.303864 0
194 116.842552 0
-61.7096 3303.6 172.031 8.000000 3
193 116.842552 0
195 174.258682 0
202 93.452187 0
-235.927 3307.4 172.031 8.000000 2
194 174.258682 0
196 121.395905 0
-351.969 3271.74 172.031 8.000000 2
195 121.395905 0
197 39.614059 4
-387.257 3271.88 154.031 8.000000 2
196 39.614059 0
198 35.983273 0
-423.231 3272.71 154.031 8.000000 2
197 35.983273 0
199 184.757004 0
-418.005 3088.03 154.031 8.000000 2
198 184.757004 0
200 51.199524 0
-469.042 3092.11 154.031 8.000000 1
217 222.103745 0
-137.846 3251.06 44.0312 8.000000 2
202 116.131950 0
207 103.517006 0
-137.969 3250.9 160.163 8.000000 2
201 116.131950 0
203 40.690655 0
-176.89 3250.95 172.031 8.000000 2
195 81.680008 0
196 176.309036 0
-1297.8 -523.053 51.203 8.000000 1
205 76.053246 0
-1269.98 -453.914 36.0312 8.000000 1
145 218.383377 0
518.154 -3110.94 -62.0883 8.000000 2
142 133.718811 0
141 314.686951 0
-36.8721 3273.86 44.0312 8.000000 2
201 103.517006 0
208 188.792343 0
-34.9175 3462.65 44.0312 8.000000 2
207 188.792343 0
209 319.459930 0
-30.0983 3782.07 44.0312 8.000000 2
208 319.459930 0
210 365.104126 0
334.981 3786.31 44.0312 8.000000 2
209 365.104126 0
211 593.878845 0
-258.859 3779.5 44.0312 8.000000 2
210 593.878845 0
212 338.250427 0
-224.419 3451.82 -32.4621 8.000000 2
211 338.250427 0
213 301.144684 0
-521.122 3450.65 -83.9802 8.000000 2
212 301.144684 0
214 409.670349 0
-523.375 3041.39 -102.228 8.000000 2
213 409.670349 0
215 326.716553 0
-466.488 2723.38 -53.4496 8.000000 2
214 326.716553 0
216 112.575813 0
-403.871 2731.77 39.7278 8.000000 3
215 112.575813 0
76 310.953400 0
75 238.995361 0
-523.702 3115.56 -59.9602 8.000000 2
214 85.372108 0
213 335.953461 0
154.956 3780.81 204.031 8.000000 1
209 244.635880 0
-154.502 -3783.36 204.031 8.000000 1
137 244.092621 0
1291.69 2109 540.031 8.000000 1
1 133.885300 0

View File

@ -1,19 +0,0 @@
entityDef weapon_357
{
"editor_color" ".3 .3 1"
"editor_mins" "-16 -16 -16"
"editor_maxs" "16 16 16"
"editor_usage" ".367 Revolver"
"editor_rotatable" "1"
"spawnclass" "NSItem"
"model" "models/w_357.mdl"
"inv_item" "6"
"snd_acquire" "weapon.pickup"
"snd_respawn" "item.respawn"
}
entityDef weapon_python
{
"spawnclass" "weapon_357"
}

View File

@ -1,19 +0,0 @@
entityDef weapon_9mmAR
{
"editor_color" ".3 .3 1"
"editor_mins" "-16 -16 -16"
"editor_maxs" "16 16 16"
"editor_usage" "9mm AR"
"editor_rotatable" "1"
"spawnclass" "NSItem"
"model" "models/w_9mmAR.mdl"
"inv_item" "8"
"snd_acquire" "weapon.pickup"
"snd_respawn" "item.respawn"
}
entityDef weapon_mp5
{
"spawnclass" "weapon_9mmAR"
}

View File

@ -1,19 +0,0 @@
entityDef weapon_9mmhandgun
{
"editor_color" ".3 .3 1"
"editor_mins" "-16 -16 -16"
"editor_maxs" "16 16 16"
"editor_usage" "9mm Handgun"
"editor_rotatable" "1"
"spawnclass" "NSItem"
"model" "models/w_9mmhandgun.mdl"
"inv_item" "5"
"snd_acquire" "weapon.pickup"
"snd_respawn" "item.respawn"
}
entityDef weapon_glock
{
"spawnclass" "weapon_9mmhandgun"
}

View File

@ -1,14 +0,0 @@
entityDef weapon_crossbow
{
"editor_color" ".3 .3 1"
"editor_mins" "-16 -16 -16"
"editor_maxs" "16 16 16"
"editor_usage" "Crossbow"
"editor_rotatable" "1"
"spawnclass" "NSItem"
"model" "models/w_crossbow.mdl"
"inv_item" "10"
"snd_acquire" "weapon.pickup"
"snd_respawn" "item.respawn"
}

View File

@ -1,14 +0,0 @@
entityDef weapon_crowbar
{
"editor_color" ".3 .3 1"
"editor_mins" "-16 -16 -16"
"editor_maxs" "16 16 16"
"editor_usage" "Crowbar"
"editor_rotatable" "1"
"spawnclass" "NSItem"
"model" "models/w_crowbar.mdl"
"inv_item" "1"
"snd_acquire" "weapon.pickup"
"snd_respawn" "item.respawn"
}

View File

@ -1,14 +0,0 @@
entityDef weapon_egon
{
"editor_color" ".3 .3 1"
"editor_mins" "-16 -16 -16"
"editor_maxs" "16 16 16"
"editor_usage" "Gluon Gun"
"editor_rotatable" "1"
"spawnclass" "NSItem"
"model" "models/w_egon.mdl"
"inv_item" "13"
"snd_acquire" "weapon.pickup"
"snd_respawn" "item.respawn"
}

View File

@ -1,14 +0,0 @@
entityDef weapon_gauss
{
"editor_color" ".3 .3 1"
"editor_mins" "-16 -16 -16"
"editor_maxs" "16 16 16"
"editor_usage" "Tau Cannon"
"editor_rotatable" "1"
"spawnclass" "NSItem"
"model" "models/w_gauss.mdl"
"inv_item" "12"
"snd_acquire" "weapon.pickup"
"snd_respawn" "item.respawn"
}

View File

@ -1,14 +0,0 @@
entityDef weapon_handgrenade
{
"editor_color" ".3 .3 1"
"editor_mins" "-16 -16 -16"
"editor_maxs" "16 16 16"
"editor_usage" "Hand Grenade"
"editor_rotatable" "1"
"spawnclass" "NSItem"
"model" "models/w_grenade.mdl"
"inv_item" "15"
"snd_acquire" "weapon.pickup"
"snd_respawn" "item.respawn"
}

View File

@ -1,14 +0,0 @@
entityDef weapon_hornetgun
{
"editor_color" ".3 .3 1"
"editor_mins" "-16 -16 -16"
"editor_maxs" "16 16 16"
"editor_usage" "Hornet Gun"
"editor_rotatable" "1"
"spawnclass" "NSItem"
"model" "models/w_hgun.mdl"
"inv_item" "14"
"snd_acquire" "weapon.pickup"
"snd_respawn" "item.respawn"
}

View File

@ -1,14 +0,0 @@
entityDef weapon_rpg
{
"editor_color" ".3 .3 1"
"editor_mins" "-16 -16 -16"
"editor_maxs" "16 16 16"
"editor_usage" "Rocket Launcher"
"editor_rotatable" "1"
"spawnclass" "NSItem"
"model" "models/w_rpg.mdl"
"inv_item" "11"
"snd_acquire" "weapon.pickup"
"snd_respawn" "item.respawn"
}

View File

@ -1,14 +0,0 @@
entityDef weapon_satchel
{
"editor_color" ".3 .3 1"
"editor_mins" "-16 -16 -16"
"editor_maxs" "16 16 16"
"editor_usage" "Satchel"
"editor_rotatable" "1"
"spawnclass" "NSItem"
"model" "models/w_satchel.mdl"
"inv_item" "16"
"snd_acquire" "weapon.pickup"
"snd_respawn" "item.respawn"
}

View File

@ -1,14 +0,0 @@
entityDef weapon_shotgun
{
"editor_color" ".3 .3 1"
"editor_mins" "-16 -16 -16"
"editor_maxs" "16 16 16"
"editor_usage" "Shotgun"
"editor_rotatable" "1"
"spawnclass" "NSItem"
"model" "models/w_shotgun.mdl"
"inv_item" "9"
"snd_acquire" "weapon.pickup"
"snd_respawn" "item.respawn"
}

View File

@ -1,15 +0,0 @@
entityDef weapon_snark
{
"editor_color" ".3 .3 1"
"editor_mins" "-16 -16 -16"
"editor_maxs" "16 16 16"
"editor_usage" "Snark"
"editor_rotatable" "1"
"spawnclass" "NSItem"
"model" "models/w_sqknest.mdl"
"frame" "1"
"inv_item" "18"
"snd_acquire" "weapon.pickup"
"snd_respawn" "item.respawn"
}

View File

@ -1,16 +0,0 @@
entityDef weapon_tripmine
{
"editor_color" ".3 .3 1"
"editor_mins" "-16 -16 -16"
"editor_maxs" "16 16 16"
"editor_usage" "Tripmine"
"editor_rotatable" "1"
"spawnclass" "NSItem"
"model" "models/v_tripmine.mdl"
"body" "2"
"frame" "8"
"inv_item" "17"
"snd_acquire" "weapon.pickup"
"snd_respawn" "item.respawn"
}

View File

@ -0,0 +1,24 @@
include "weapons/357.def"
include "weapons/9mmAR.def"
include "weapons/9mmhandgun.def"
include "weapons/crossbow.def"
include "weapons/crowbar.def"
include "weapons/displacer.def"
include "weapons/eagle.def"
include "weapons/egon.def"
include "weapons/gauss.def"
include "weapons/grapple.def"
include "weapons/handgrenade.def"
include "weapons/hornetgun.def"
include "weapons/knife.def"
include "weapons/m249.def"
include "weapons/penguin.def"
include "weapons/pipewrench.def"
include "weapons/rpg.def"
include "weapons/satchel.def"
include "weapons/shockrifle.def"
include "weapons/shotgun.def"
include "weapons/snark.def"
include "weapons/sniperrifle.def"
include "weapons/sporelauncher.def"
include "weapons/tripmine.def"

View File

@ -8,7 +8,7 @@ entityDef weapon_displacer
"spawnclass" "NSItem"
"model" "models/w_displacer.mdl"
"inv_item" "21"
"inv_item" "$WEAPON_DISPLACER"
"snd_acquire" "weapon.pickup"
"snd_respawn" "item.respawn"
}

View File

@ -8,7 +8,7 @@ entityDef weapon_eagle
"spawnclass" "NSItem"
"model" "models/w_desert_eagle.mdl"
"inv_item" "7"
"inv_item" "$WEAPON_EAGLE"
"snd_acquire" "weapon.pickup"
"snd_respawn" "item.respawn"
}

View File

@ -8,7 +8,7 @@ entityDef weapon_grapple
"spawnclass" "NSItem"
"model" "models/w_bgrap.mdl"
"inv_item" "4"
"inv_item" "$WEAPON_GRAPPLE"
"snd_acquire" "weapon.pickup"
"snd_respawn" "item.respawn"
}

View File

@ -8,7 +8,7 @@ entityDef weapon_knife
"spawnclass" "NSItem"
"model" "models/w_knife.mdl"
"inv_item" "3"
"inv_item" "$WEAPON_KNIFE"
"snd_acquire" "weapon.pickup"
"snd_respawn" "item.respawn"
}

View File

@ -8,7 +8,7 @@ entityDef weapon_m249
"spawnclass" "NSItem"
"model" "models/w_saw.mdl"
"inv_item" "20"
"inv_item" "$WEAPON_M249"
"snd_acquire" "weapon.pickup"
"snd_respawn" "item.respawn"
}

View File

@ -8,7 +8,7 @@ entityDef weapon_penguin
"spawnclass" "NSItem"
"model" "models/w_penguinnest.mdl"
"inv_item" "19"
"inv_item" "$WEAPON_PENGUIN"
"snd_acquire" "weapon.pickup"
"snd_respawn" "item.respawn"
}

View File

@ -8,7 +8,7 @@ entityDef weapon_pipewrench
"spawnclass" "NSItem"
"model" "models/w_pipe_wrench.mdl"
"inv_item" "2"
"inv_item" "$WEAPON_PIPEWRENCH"
"snd_acquire" "weapon.pickup"
"snd_respawn" "item.respawn"
}

View File

@ -8,7 +8,7 @@ entityDef weapon_shockrifle
"spawnclass" "NSItem"
"model" "models/w_shock.mdl"
"inv_item" "24"
"inv_item" "$WEAPON_SHOCKRIFLE"
"snd_acquire" "weapon.pickup"
"snd_respawn" "item.respawn"
}

View File

@ -8,7 +8,7 @@ entityDef weapon_sniperrifle
"spawnclass" "NSItem"
"model" "models/w_m40a1.mdl"
"inv_item" "22"
"inv_item" "$WEAPON_SNIPERRIFLE"
"snd_acquire" "weapon.pickup"
"snd_respawn" "item.respawn"
}

View File

@ -8,7 +8,7 @@ entityDef weapon_sporelauncher
"spawnclass" "NSItem"
"model" "models/w_spore_launcher.mdl"
"inv_item" "23"
"inv_item" "$WEAPON_SPORELAUNCHER"
"snd_acquire" "weapon.pickup"
"snd_respawn" "item.respawn"
}

View File

@ -0,0 +1,26 @@
// weapon constants
WEAPON_NONE 0
WEAPON_CROWBAR 1
WEAPON_PIPEWRENCH 2
WEAPON_KNIFE 3
WEAPON_GRAPPLE 4
WEAPON_GLOCK 5
WEAPON_PYTHON 6
WEAPON_EAGLE 7
WEAPON_MP5 8
WEAPON_SHOTGUN 9
WEAPON_CROSSBOW 10
WEAPON_RPG 11
WEAPON_GAUSS 12
WEAPON_EGON 13
WEAPON_HORNETGUN 14
WEAPON_HANDGRENADE 15
WEAPON_SATCHEL 16
WEAPON_TRIPMINE 17
WEAPON_SNARK 18
WEAPON_PENGUIN 19
WEAPON_M249 20
WEAPON_DISPLACER 21
WEAPON_SNIPERRIFLE 22
WEAPON_SPORELAUNCHER 23
WEAPON_SHOCKRIFLE 24

View File

@ -0,0 +1 @@
exec skill_valve.cfg

View File

@ -0,0 +1,29 @@
op4ctf_bm.flag_taken
{
attenuation none
sample "ctf/bm_flagtaken.wav"
}
op4ctf_bm.flag_capture
{
attenuation none
sample "ctf/civ_flag_capture.wav"
}
op4ctf_op4.flag_taken
{
attenuation none
sample "ctf/soldier_flagtaken.wav"
}
op4ctf_op4.flag_capture
{
attenuation none
sample "ctf/marine_flag_capture.wav"
}
op4ctf_backpack.refresh
{
attenuation none
sample "buttons/blip1.wav"
}