Commit 9f8892d0 authored by Mikleo's avatar Mikleo
Browse files

--

parent 7e74fe1b
Pipeline #10753 passed with stages
in 16 seconds
......@@ -10,7 +10,7 @@
#include <SteamWorks>
#define PluginVersion "1.18"
#define PluginVersion "1.19"
float pVersion;
// note linearmap field is unstable
......
......@@ -36,9 +36,12 @@ enum struct ScriptEnum {
char context[32];
}
OnCommandFunction commandFunctions[30];
OnCommandFunction commandFunctions[40];
// max args is handy for error checking. Especially for missing quotes.
int maxCommandArgs[30];
int maxCommandArgs[40];
bool autoReplaceVariables[40];
// create a simple scriptable timer system
ArrayList commands;
......@@ -69,7 +72,7 @@ void Funcs_OnPluginStart()
AddCommand("SpawnPreset",SpawnPresetCommand,6);
AddCommand("Teleport",TeleportCommand,6);
AddCommand("EmitSound",EmitSoundCommand,6);
AddCommand("TargetName",TargetNameCommand,6);
AddCommand("TargetName",TargetNameCommand,4);
AddCommand("TargetNameAll",TargetNameAllCommand,6);
AddCommand("TargetClassname",TargetClassnameCommand,6);
AddCommand("TargetClassnameAll",TargetClassnameAllCommand,6);
......@@ -82,18 +85,21 @@ void Funcs_OnPluginStart()
AddCommand("OnCommand",HookCommand,4);
AddCommand("PrintToTarget",PrintToTarget,1);
AddCommand("If",IfCommand,100);
AddCommand("Set",SetVariable,3);
AddCommand("Inc",IncVariable,1);
AddCommand("Dec",DecVariable,1);
AddCommand("Set",SetVariable,10,false);
AddCommand("Inc",IncVariable,1,false);
AddCommand("Dec",DecVariable,1,false);
RegAdminCmd("sm_execscript", Command_Exec_Script, ADMFLAG_BAN);
RegAdminCmd("sm_clearscripts", Command_Clear_Scripts, ADMFLAG_SLAY);
}
public void AddCommand(char[]name, OnCommandFunction func,int maxArgs)
void AddCommand(char[]name, OnCommandFunction func,int maxArgs,bool replaceVariables = true)
{
commandOptions.SetValue(name,numCommands);
commandFunctions[numCommands] = func;
maxCommandArgs[numCommands] = maxArgs;
autoReplaceVariables[numCommands] = replaceVariables;
numCommands ++;
}
......@@ -103,6 +109,16 @@ public Action Command_Clear_Scripts(int client, int args)
PrintToChat(client,"scripts cleared");
return Plugin_Handled;
}
public Action Command_Exec_Script(int client, int args)
{
if(!CanEditMap(client))
return Plugin_Handled;
// todo -- make sure it prints to chat for accountability.
return Plugin_Handled;
}
void Funcs_OnMapStart()
......@@ -485,6 +501,11 @@ RunEntityFunctionInternal(int entRef,char[] funcString)
char command[32];
BreakArg(funcString, command, sizeof(command),argIndex);
char args[500];
if(argIndex != -1)
strcopy(args,remainingStart - argIndex + 1 ,funcString[argIndex]);
int nextEnt = -1;
int index;
......@@ -492,11 +513,11 @@ RunEntityFunctionInternal(int entRef,char[] funcString)
{
Call_StartFunction(null, commandFunctions[index]);
Call_PushCell(entRef);
if(argIndex != -1)
// this copies the string, unfortunantly at a reduced size.
Call_PushString(funcString[argIndex]);
else
Call_PushString("");
if(autoReplaceVariables[index])
ReplaceVariables(entRef,args,sizeof(args));
Call_PushString(args);
Call_PushString(funcString[remainingStart]);
......@@ -519,16 +540,6 @@ RunEntityFunctionInternal(int entRef,char[] funcString)
}
// necessary because of runentityinternal string optimizations
// used solely for targeting
void RunDuplicateEntityFunctionInternal(int entity,char [] remainder)
{
char copy[1024];
strcopy(copy,sizeof(copy),remainder);
RunEntityFunctionInternal(entity,copy);
}
stock void SkipArg(char[] mainString,int skipNumber,int &argIndex)
{
for(int = 0;i< skipNumber && argIndex != -1;i++)
......@@ -638,11 +649,9 @@ public bool EvaluateCondition(int entity,char[] condition)
// format If $var == 2 TEST ELSE TEST2
public int IfCommand(int entity,char[] mArgs,char[] remainder)
public int IfCommand(int entity,char[] args,char[] remainder)
{
int argIndex;
char args[512];
CopyReplaceVariables(entity,args,sizeof(args),mArgs);
bool hasArgs = true;
......@@ -881,11 +890,9 @@ public void FormatChatTextMessage(char[] message)
}
public int ChatTextCommand(int entity,char[] mArgs,char[] remainder)
public int ChatTextCommand(int entity,char[] args,char[] remainder)
{
char args[500];
CopyReplaceVariables(entity,args,sizeof(args),mArgs);
int argIndex;
char nf_text[512];
......@@ -930,10 +937,8 @@ public int ChatTextCommand(int entity,char[] mArgs,char[] remainder)
}
// prints to clients
public int PrintToTarget(int entity,char[] mArgs,char[] remainder)
public int PrintToTarget(int entity,char[] args,char[] remainder)
{
char args [500];
CopyReplaceVariables(entity,args,sizeof(args),mArgs);
int client = EntRefToEntIndex(entity);
int argIndex;
char text[256];
......@@ -1017,6 +1022,7 @@ public int DecVariable(int entity,char[] args,char[] remainder)
public int SetVariable(int entity,char[] mArgs,char[] remainder)
{
// replace with larger buffer
// needed for replacing variables
char args[500];
strcopy(args,sizeof(args),mArgs);
......@@ -1088,10 +1094,8 @@ public int SetVariable(int entity,char[] mArgs,char[] remainder)
public int HudTextCommand(int entity,char[] mArgs,char[] remainder)
public int HudTextCommand(int entity,char[] args,char[] remainder)
{
char args[512];
CopyReplaceVariables(entity,args,sizeof(args),mArgs);
int argIndex;
char nf_text[256];
BreakArg(args,nf_text,sizeof(nf_text),argIndex);
......@@ -1382,14 +1386,38 @@ public int SpawnPresetCommand(int entity,char[] args,char[] remainder)
public int TeleportCommand(int entity,char[] args,char[] remainder)
{
// set position
// have an optional relative entity section.
int argIndex;
float position[3];
char posString[32];
BreakArg(args,posString,sizeof(posString),argIndex);
position[0] = StringToFloat(posString);
BreakArg(args,posString,sizeof(posString),argIndex);
position[1] = StringToFloat(posString);
BreakArg(args,posString,sizeof(posString),argIndex);
position[2] = StringToFloat(posString);
char targetName[32];
if(BreakArg(args,targetName,sizeof(targetName),argIndex))
{
// get the entity with that name
int targetEntity = GetSingleEntityByName(targetName);
if(targetEntity > 0)
{
float targetPosition[3];
GetEntPropVector(targetEntity, Prop_Data, "m_vecAbsOrigin", targetPosition);
AddVectors(position,targetPosition,position);
}
}
TeleportEntity(entity, position,NULL_VECTOR , NULL_VECTOR);
return entity;
}
public int EmitSoundCommand(int entity,char[] mArgs,char[] remainder)
public int EmitSoundCommand(int entity,char[] args,char[] remainder)
{
char args[512];
CopyReplaceVariables(entity,args,sizeof(args),mArgs);
int argIndex;
char soundName[64];
BreakArg(args,soundName,sizeof(soundName),argIndex);
......@@ -1451,7 +1479,7 @@ public int TargetNameCommandInternal(int entity,char[] args,char[] remainder,int
if(StrEqual(strName, targetName,true) && !( GetEntityFlags(i) & FL_KILLME) && (team == -1 || GetEntProp(i,Prop_Send,"m_iTeamNum") == team ))
{
numberFound ++;
RunDuplicateEntityFunctionInternal(i,remainder);
RunEntityFunctionInternal(i,remainder);
}
}
}
......@@ -1464,6 +1492,7 @@ public int TargetNameCommandInternal(int entity,char[] args,char[] remainder,int
public int TargetClassnameCommand(int entity,char[] args,char[] remainder)
{
return TargetClassnameInternal(entity,args,remainder,1);
......@@ -1495,7 +1524,7 @@ public int TargetClassnameInternal(int entity,char[] args,char[] remainder, int
if (IsValidEntity(iEnt) && !( GetEntityFlags(iEnt) & FL_KILLME) && (team == -1 || GetEntProp(iEnt,Prop_Send,"m_iTeamNum") == team ))
{
numberFound ++;
RunDuplicateEntityFunctionInternal(iEnt,remainder);
RunEntityFunctionInternal(iEnt,remainder);
}
}
return -1;
......@@ -1795,7 +1824,7 @@ int FindEndDelimiter(char[] message)
}
// used if working with pushed arguments
CopyReplaceVariables(int entRef,char[] buffer,int bufferSize,char[] message)
stock CopyReplaceVariables(int entRef,char[] buffer,int bufferSize,char[] message)
{
strcopy(buffer,bufferSize,message);
ReplaceVariables(entRef,buffer,bufferSize);
......@@ -1843,13 +1872,14 @@ ReplaceVariables(int entRef,char[] message,int messageSize)
PropType propType;
int offset = FindPropOffset(entRef,variable,propType,type);
Format(stringToReplace,sizeof(stringToReplace),"$%s",variable);
if(offset == -2)
{
GetScriptVariable(stringToReplace,outputValue,sizeof(outputValue));
ReplaceString(message, messageSize,stringToReplace,outputValue);
// prevent replacing other variables which may contain the string in this variable
ReplaceStringEx(message, messageSize,stringToReplace,outputValue,size,-1);
}
......@@ -1864,8 +1894,7 @@ ReplaceVariables(int entRef,char[] message,int messageSize)
else if(type == PropField_String)
GetEntPropString(entRef,propType,variable,outputValue,sizeof(outputValue));
ReplaceString(message, messageSize,stringToReplace,outputValue);
ReplaceStringEx(message, messageSize,stringToReplace,outputValue,size,-1);
}
else
......@@ -2051,6 +2080,11 @@ bool CheckScriptForErrors(char[] funcString,char[] scriptname)
PrintError("[%s] If argument \"%s\" is a script that doesen't exist",scriptname,buffer,funcString);
hasError = true;
}
// condition must be a string.
if((index == 2 || index == 4) && buffer[0] != '"')
{
PrintError("[%s] If condition must be wrapped in speech marks(*). %s",scriptname,"",funcString);
}
index++;
}
......
"Scenario"
{
"Description" "Hold the middle flag for 5 minutes to win."
"Details" "The temple will open after 8 minutes"
"Description" "Hold the middle flag for 8 minutes to win."
"details" "The temple will open after 5 minutes\The timer will decrease by 20 seconds each reset (Min: 4 minutes)"
"details" " "
"Tags" " "
"Author" "Mikleo"
......@@ -9,27 +9,32 @@
"BE_Res" "300.000000"
"NF_Tickets" "250.000000"
"BE_Tickets" "250.000000"
"version" "1.170000"
"version" "1.180000"
"hLimit" "32179"
"Scripts"
{
"KOTH"
{
"$string_MainText" "King of the Hill\Hold the temple for 5 minutes to win"
"$string_EnableTimerText" "Temple opens in TIME_LEFT"
"$string_EnableSound" "ambient/explosions/explode_4.wav"
"$string_NeutralText" "Flag Neutral"
"$string_MainText" "King of the Hill\Hold the temple for 8 minutes to win"
"$string_EnableTimerText" "Temple opens in TIME_LEFT"
"$string_EnableSound" "ambient/explosions/explode_4.wav"
"$int_EnableLength" "300"
"$string_NeutralText" "Flag Neutral"
"$int_TimerLength" "480"
"$int_TimerDecrease" "20"
"$int_TimerLengthMin" "240"
"i_HookFlag" "TargetName KOTHFlag -> HookOutput OnNeutral NeutralTimer -> HookOutput OnImpCap BETimer -> HookOutput OnNFCap NFTimer"
"i_StartingTimer" "Cancel KOTHTimer -> TextTimer -1 *$string_MainText* _ KOTHTimer"
"s_EnableTimer" "Cancel KOTHTimer -> Run DisableFlag -> TextTimer 480 *$string_EnableTimerText* _ KOTHTimer -> Run DestroyBlockers EnableFlag KOTHOpenEffect NeutralTimer"
"NeutralTimer" "Cancel KOTHTimer -> TextTimer -1 *$string_NeutralText* _ KOTHTimer"
"BETimer" "Cancel KOTHTimer -> TextTimer 300 *BE Victory in TIME_LEFT* _ KOTHTimer -> TargetParams -> Input InputImpWin 0 "
"NFTimer" "Cancel KOTHTimer -> TextTimer 300 *NF Victory in TIME_LEFT* _ KOTHTimer -> TargetParams -> Input InputNFWin 0 "
"DestroyBlockers" "TargetNameAll KOTHBlocker -> Input Break"
"KOTHOpenEffect" "EmitSound *$string_EnableSound* -> TargetNameAll KOTHOpenParticles -> Input Start"
"s_EnableTimer" "Cancel KOTHTimer -> Run DisableFlag -> TextTimer $int_EnableLength *$string_EnableTimerText* _ KOTHTimer -> Run DestroyBlockers EnableFlag KOTHOpenEffect NeutralTimer"
"NeutralTimer" "Cancel KOTHTimer -> Run ReduceTime -> TextTimer -1 *$string_NeutralText* _ KOTHTimer"
"BETimer" "Cancel KOTHTimer -> TextTimer $int_TimerLength *BE Victory in TIME_LEFT* _ KOTHTimer -> TargetParams -> Run TeleportAboveFlag -> Input InputImpWin 0 "
"NFTimer" "Cancel KOTHTimer -> TextTimer $int_TimerLength *NF Victory in TIME_LEFT* _ KOTHTimer -> TargetParams -> Run TeleportAboveFlag -> Input InputNFWin 0 "
"DestroyBlockers" "TargetNameAll KOTHBlocker -> Input Break"
"KOTHOpenEffect" "EmitSound *$string_EnableSound* -> TargetNameAll KOTHOpenParticles -> Input Start"
"DisableFlag" "TargetName KOTHFlag -> Input InputNFDisable -> Input InputImpDisable"
"EnableFlag" "TargetName KOTHFlag -> Input InputNFEnable -> Input InputImpEnable"
"ReduceTime" "Set $int_TimerLength = $int_TimerLength - $int_TimerDecrease -> If *$int_TimerLength < $int_TimerLengthMin* -> Set $int_TimerLength = $int_TimerLengthMin"
"TeleportAboveFlag" "Teleport 0 0 300 KOTHFlag"
}
}
"NF_Research"
......@@ -95,15 +100,15 @@
"1942"
{
"className" "emp_imp_commander"
"position" "-6655.129395 -8857.420898 286.112457"
"angles" "2.306295 0.406886 1.244743"
"position" "-6654.988281 -8861.183594 285.997375"
"angles" "2.341814 0.516745 1.210446"
"coords" "B2"
}
"1940"
{
"className" "emp_nf_commander"
"position" "6655.924805 -8665.294922 367.975708"
"angles" "-0.043201 -0.017596 -0.496735"
"position" "6655.921875 -8665.751953 367.972443"
"angles" "-0.043370 -0.018517 -0.498199"
"coords" "D2"
}
"2136"
......@@ -253,7 +258,7 @@
{
"className" "emp_resource_point_prop"
"position" "-1664.000000 3432.000000 1616.000000"
"angles" "-75.901497 6.863350 158.492966"
"angles" "-75.901497 6.863350 158.492950"
"coords" "C5"
"name" "resnode 6"
"enabled" "1"
......@@ -332,7 +337,7 @@
"1980"
{
"className" "prop_dynamic"
"position" "-1631.150024 -4918.489258 144.250000"
"position" "-1631.150024 -4918.488770 144.250000"
"angles" "0.000000 66.000000 0.000000"
"coords" "C3"
"model" "models/common/props_foliage/trees/orexcluster2a.mdl"
......@@ -733,7 +738,7 @@
"5000008"
{
"className" "emp_cap_model"
"position" "-1.741734 -7550.321289 640.031250"
"position" "-1.741734 -7550.320801 640.031250"
"angles" "0.000000 0.300000 0.000000"
"coords" "C2"
"pointNumber" "31"
......@@ -799,7 +804,7 @@
"5000018"
{
"className" "prop_dynamic"
"position" "33.392605 -7444.412109 635.031250"
"position" "33.392601 -7444.411621 635.031250"
"angles" "0.000000 -69.099998 0.000000"
"coords" "C2"
"model" "models/common/props_foliage/lake/flowerc.mdl"
......@@ -819,7 +824,7 @@
"5000034"
{
"className" "prop_dynamic"
"position" "-554.520081 -2536.473389 4.444397"
"position" "-554.520081 -2536.473145 4.444397"
"angles" "0.000000 276.200012 0.000000"
"coords" "C3"
"model" "models/common/props_foliage/lake/rocklarge_c.mdl"
......@@ -829,8 +834,8 @@
"5000021"
{
"className" "prop_dynamic"
"position" "-118.684471 -7359.370605 632.224731"
"angles" "-0.000000 37.999996 0.000000"
"position" "-118.684464 -7359.370117 632.224731"
"angles" "-0.000000 38.000000 0.000000"
"coords" "C2"
"model" "models/common/props_foliage/lake/rockmedium_vara.mdl"
"MoveType" "0"
......@@ -839,7 +844,7 @@
"5000035"
{
"className" "prop_dynamic"
"position" "-26.632692 -7319.497559 632.224731"
"position" "-26.632694 -7319.497070 632.224731"
"angles" "-0.000000 12.599998 0.000000"
"coords" "C2"
"model" "models/common/props_foliage/lake/rockmedium_vara.mdl"
......@@ -899,7 +904,7 @@
"5000041"
{
"className" "prop_dynamic"
"position" "71.633308 -7765.700195 632.224731"
"position" "71.633301 -7765.700195 632.224731"
"angles" "-0.000000 -164.100021 0.000000"
"coords" "C2"
"model" "models/common/props_foliage/lake/rockmedium_vara.mdl"
......@@ -909,7 +914,7 @@
"5000042"
{
"className" "prop_dynamic"
"position" "-114.943878 -7731.467285 632.224731"
"position" "-114.943878 -7731.466797 632.224731"
"angles" "-0.000000 146.899994 0.000000"
"coords" "C2"
"model" "models/common/props_foliage/lake/rockmedium_vara.mdl"
......@@ -919,7 +924,7 @@
"5000043"
{
"className" "prop_dynamic"
"position" "-187.942307 -7647.549805 632.224731"
"position" "-187.942291 -7647.549805 632.224731"
"angles" "-0.000000 118.699997 0.000000"
"coords" "C2"
"model" "models/common/props_foliage/lake/rockmedium_vara.mdl"
......@@ -929,7 +934,7 @@
"5000044"
{
"className" "prop_dynamic"
"position" "-212.685165 -7538.649414 632.224731"
"position" "-212.685181 -7538.649414 632.224731"
"angles" "0.000000 90.400002 0.000000"
"coords" "C2"
"model" "models/common/props_foliage/lake/rockmedium_vara.mdl"
......@@ -939,7 +944,7 @@
"5000045"
{
"className" "prop_dynamic"
"position" "118.660561 -7606.842285 635.031250"
"position" "118.660561 -7606.841797 635.031250"
"angles" "0.000000 -11.700000 0.000000"
"coords" "C2"
"model" "models/common/props_foliage/lake/flowerc.mdl"
......@@ -949,7 +954,7 @@
"5000046"
{
"className" "prop_dynamic"
"position" "-61.003643 -7651.445801 635.031250"
"position" "-61.003639 -7651.445801 635.031250"
"angles" "0.000000 -131.600006 0.000000"
"coords" "C2"
"model" "models/common/props_foliage/lake/flowerc.mdl"
......@@ -969,7 +974,7 @@
"5000048"
{
"className" "prop_dynamic"
"position" "64.556671 -7653.415039 635.031250"
"position" "64.556671 -7653.414551 635.031250"
"angles" "0.000000 -49.600002 0.000000"
"coords" "C2"
"model" "models/common/props_foliage/lake/flowerc.mdl"
......@@ -979,7 +984,7 @@
"5000049"
{
"className" "prop_dynamic"
"position" "-97.351234 -7608.695801 635.031250"
"position" "-97.351242 -7608.695801 635.031250"
"angles" "0.000000 -123.300003 0.000000"
"coords" "C2"
"model" "models/common/props_foliage/lake/flowerc.mdl"
......@@ -989,7 +994,7 @@
"5000022"
{
"className" "prop_dynamic"
"position" "95.935051 -5166.812500 143.632614"
"position" "95.935051 -5166.812012 143.632614"
"angles" "0.000000 207.000000 0.000000"
"coords" "C3"
"model" "models/common/props_foliage/lake/blackcw_tall.mdl"
......@@ -999,7 +1004,7 @@
"5000031"
{
"className" "prop_dynamic"
"position" "50.017235 -5128.158691 140.069153"
"position" "50.017231 -5128.158203 140.069153"
"angles" "0.000000 -208.500000 0.000000"
"coords" "C3"
"model" "models/common/props_foliage/lake/rockmedium_varb.mdl"
......@@ -1009,7 +1014,7 @@
"5000050"
{
"className" "prop_dynamic"
"position" "155.568573 -5164.529785 140.069153"
"position" "155.568573 -5164.529297 140.069153"
"angles" "0.000000 -203.399994 0.000000"
"coords" "C3"
"model" "models/common/props_foliage/lake/rockmedium_varb.mdl"
......@@ -1019,7 +1024,7 @@
"5000051"
{
"className" "prop_dynamic"
"position" "53.264080 -5199.914551 140.069153"
"position" "53.264084 -5199.914063 140.069153"
"angles" "0.000000 -121.400002 0.000000"
"coords" "C3"
"model" "models/common/props_foliage/lake/rockmedium_varb.mdl"
......@@ -1029,7 +1034,7 @@
"5000052"
{
"className" "prop_dynamic"
"position" "124.808060 -5077.348145 140.069153"
"position" "124.808067 -5077.347656 140.069153"
"angles" "0.000000 -147.200012 0.000000"
"coords" "C3"
"model" "models/common/props_foliage/lake/rockmedium_varb.mdl"
......@@ -1039,8 +1044,8 @@
"5000054"
{
"className" "prop_dynamic"
"position" "93.147362 -5151.615234 143.632614"
"angles" "0.000000 386.899963 0.000000"
"position" "93.147362 -5151.614746 143.632614"
"angles" "0.000000 386.899933 0.000000"
"coords" "C3"
"model" "models/common/props_foliage/lake/blackcw_tall.mdl"
"MoveType" "0"
......@@ -1049,7 +1054,7 @@
"5000055"
{
"className" "prop_dynamic"
"position" "140.751953 -5230.801758 140.069153"
"position" "140.751953 -5230.801270 140.069153"
"angles" "0.000000 -227.900009 0.000000"
"coords" "C3"
"model" "models/common/props_foliage/lake/rockmedium_varb.mdl"
......@@ -1059,7 +1064,7 @@
"5000056"
{
"className" "prop_dynamic"
"position" "427.919006 -7122.197266 543.444397"
"position" "427.919006 -7122.196777 543.444397"
"angles" "0.000000 267.600006 0.000000"
"coords" "C3"
"name" "KOTHBlocker"
......@@ -1070,7 +1075,7 @@
"5000057"
{
"className" "prop_dynamic"
"position" "427.919006 -7122.196777 700.444397"
"position" "427.919006 -7122.196289 700.444397"
"angles" "0.000000 267.600006 0.000000"
"coords" "C3"
"name" "KOTHBlocker"
......@@ -1081,7 +1086,7 @@
"5000058"
{
"className" "prop_dynamic"
"position" "427.919006 -7122.196289 913.344421"
"position" "427.919006 -7122.195801 913.344421"
"angles" "0.000000 267.600006 0.000000"
"coords" "C3"
"name" "KOTHBlocker"
......@@ -1092,7 +1097,7 @@
"5000059"
{
"className" "prop_dynamic"
"position" "-366.981018 -7122.196289 700.444397"
"position" "-366.980988 -7122.195801 700.444397"
"angles" "0.000000 267.600006 0.000000"
"coords" "C3"
"name" "KOTHBlocker"
......@@ -1103,7 +1108,7 @@
"5000060"
{
"className" "prop_dynamic"
"position" "-366.981018 -7122.196777 543.444397"
"position" "-366.980988 -7122.196289 543.444397"
"angles" "0.000000 267.600006 0.000000"
"coords" "C3"
"name" "KOTHBlocker"
......@@ -1114,7 +1119,7 @@
"5000061"
{
"className" "prop_dynamic"
"position" "-366.981018 -7122.195801 913.344421"
"position" "-366.980988 -7122.195801 913.344421"
"angles" "0.000000 267.600006 0.000000"
"coords" "C3"
"name" "KOTHBlocker"
......@@ -1125,8 +1130,8 @@
"5000062"
{
"className" "prop_dynamic"
"position" "11.418991 -7429.496582 1084.144531"
"angles" "75.000000 -92.399994 -0.000001"
"position" "11.418991 -7429.496094 1084.144531"
"angles" "75.000000 -92.400002 -0.000001"
"coords" "C2"
"name" "KOTHBlocker"
"model" "models/common/props_foliage/lake/rocklarge_c.mdl"
......@@ -1136,7 +1141,7 @@
"5000063"
{
"className" "prop_dynamic"
"position" "11.418961 -7637.296387 1084.144531"
"position" "11.418962 -7637.296387 1084.144531"
"angles" "75.000000 -92.400002 -0.000000"
"coords" "C2"
"name" "KOTHBlocker"
......@@ -1147,7 +1152,7 @@
"5000064"
{
"className" "prop_dynamic"
"position" "11.418991 -7822.395996 1084.144531"
"position" "11.418991 -7822.395508 1084.144531"
"angles" "75.000000 -92.400002 -0.000000"
"coords" "C2"
"name" "KOTHBlocker"
......@@ -1180,7 +1185,7 @@
"5000067"
{
"className" "prop_dynamic"
"position" "11.418991 -7998.496094 1084.144531"
"position" "11.418991 -7998.495605 1084.144531"
"angles" "75.000000 -92.400002 -0.000001"
"coords" "C2"
"name" "KOTHBlocker"
......@@ -1188,10 +1193,10 @@
"MoveType" "0"
"SolidType" "6"
}
"5000068"
"5000069"
{
"className" "prop_dynamic"