{"action":"created","comment":{"url":"https://api.github.com/repos/50DKP/FF2-Official/pulls/comments/26535068","id":26535068,"diff_hunk":"@@ -6543,182 +6553,248 @@ stock GetBossIndex(client)\n \treturn -1;\n }\n \n-stock CalcBossHealthMax(client)\n+stock ParseFormula(client, const String:key[], const String:defaultFormula[], defaultValue)\n {\n \tdecl String:formula[1024], String:buffer[2];\n-\tnew String:value[1024];\n-\tnew bool:mustClose, bool:usePlayers, bool:canAdd, bool:valueReady;\n-\tnew parentheses;\n-\tnew Float:sum[128];\n-\tnew _operator[128];\n-\n+\tnew String:value[1024], Float:sum[128], calcOperators:_operator[128];\n+\tnew bool:closeBracket, bool:usePlayers, bool:foundOperator, bracket;\n \tKvRewind(BossKV[Special[client]]);\n-\tKvGetString(BossKV[Special[client]], \"health_formula\", formula, sizeof(formula), \"(((760.8+n)*n-1)^1.0341)+2046\");\n+\tKvGetString(BossKV[Special[client]], key, formula, sizeof(formula), defaultFormula);\n \tReplaceString(formula, sizeof(formula), \" \", \"\");  //Get rid of spaces\n \tnew length=strlen(formula);\n \tfor(new i; i<=length; i++)\n \t{\n \t\tstrcopy(buffer, sizeof(buffer), formula[i]);\n-\t\tswitch(buffer[0])\n+\t\tswitch (buffer[0])\n \t\t{\n-\t\t\tcase '(':\n+\t\t\tcase '\\0':\n \t\t\t{\n-\t\t\t\tparentheses++;\n-\t\t\t\tsum[parentheses]=0.0;\n-\t\t\t\t_operator[parentheses]=0;\n+\t\t\t\tfoundOperator = true; //Probably less hacky way of detecting constant hp.\n+\t\t\t\tbreak;\n \t\t\t}\n-\t\t\tcase ')':\n+\t\t\tcase '(':\n \t\t\t{\n-\t\t\t\tvalueReady=true;\n-\t\t\t\tmustClose=true;\n+\t\t\t\tif (bracket + 1 == sizeof(_operator))\n+\t\t\t\t{\n+\t\t\t\t\tdecl String:bossName[32];\n+\t\t\t\t\tKvRewind(BossKV[Special[client]]);\n+\t\t\t\t\tKvGetString(BossKV[Special[client]], \"name\", bossName, sizeof(bossName));\n+\t\t\t\t\tLogError(\"[FF2] %s's %s formula is too complex, using default!\", bossName, key);\n+\t\t\t\t\treturn defaultValue;\n+\t\t\t\t}\n+\t\t\t\tcloseBracket = false;\n+\t\t\t\tbracket++;\n+\t\t\t\t_operator[bracket] = Operation_None;\n+\t\t\t\tsum[bracket] = 0.0;\n+\t\t\t\tbreak;\n \t\t\t}\n-\t\t\tcase '\\0':\n+\t\t\tcase ')':\n \t\t\t{\n-\t\t\t\tvalueReady=true;\n+\t\t\t\tcloseBracket = true;\n+\t\t\t\tbreak;\n \t\t\t}\n \t\t\tcase 'n', 'x':\n \t\t\t{\n-\t\t\t\tusePlayers=true;\n+\t\t\t\tusePlayers = true;\n+\t\t\t\tbreak;\n \t\t\t}\n \t\t\tcase '+':\n \t\t\t{\n-\t\t\t\t_operator[parentheses]=1;\n-\t\t\t\tcanAdd=true;\n+\t\t\t\t_operator[bracket] = Operation_Add;\n+\t\t\t\tfoundOperator = true;\n+\t\t\t\tbreak;\n \t\t\t}\n \t\t\tcase '-':\n \t\t\t{\n-\t\t\t\t_operator[parentheses]=2;\n-\t\t\t\tcanAdd=true;\n+\t\t\t\t_operator[bracket] = Operation_Subtract;\n+\t\t\t\tfoundOperator = true;\n+\t\t\t\tbreak;\n \t\t\t}\n \t\t\tcase '*':\n \t\t\t{\n-\t\t\t\t_operator[parentheses]=3;\n-\t\t\t\tcanAdd=true;\n+\t\t\t\t_operator[bracket] = Operation_Multiplication;\n+\t\t\t\tfoundOperator = true;\n+\t\t\t\tbreak;\n \t\t\t}\n \t\t\tcase '/':\n \t\t\t{\n-\t\t\t\t_operator[parentheses]=4;\n-\t\t\t\tcanAdd=true;\n+\t\t\t\t_operator[bracket] = Operation_Division;\n+\t\t\t\tfoundOperator = true;\n+\t\t\t\tbreak;\n \t\t\t}\n \t\t\tcase '^':\n \t\t\t{\n-\t\t\t\t_operator[parentheses]=5;\n-\t\t\t\tcanAdd=true;\n+\t\t\t\t_operator[bracket] = Operation_Exponential;\n+\t\t\t\tfoundOperator = true;\n+\t\t\t\tbreak;\n \t\t\t}\n-\t\t\tdefault:\n+\t\t\tcase '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':\n \t\t\t{\n+\t\t\t\t//It's a number... 100% safer then assuming buffer has a number.\n \t\t\t\tStrCat(value, sizeof(value), buffer);\n+\t\t\t\tbreak;\n+\t\t\t}\n+\t\t\tdefault:\n+\t\t\t{\n+\t\t\t\tdecl String:bossName[32];\n+\t\t\t\tKvRewind(BossKV[Special[client]]);\n+\t\t\t\tKvGetString(BossKV[Special[client]], \"name\", bossName, sizeof(bossName));\n+\t\t\t\tLogError(\"[FF2] %s's %s formula contains invalid character %c!\", bossName, key, buffer[0]);\n+\t\t\t\tbreak;\n \t\t\t}\n \t\t}\n-\n-\t\tif(valueReady)\n+\t\tif (foundOperator || closeBracket)\n \t\t{\n-\t\t\tvalueReady=false;\n-\t\t\tif(usePlayers)\n+\t\t\tif (foundOperator)\n \t\t\t{\n-\t\t\t\tusePlayers=false;\n-\t\t\t\tswitch(_operator[parentheses])\n+\t\t\t\tfoundOperator = false; //This here is just so I don't forget to tell the code, \"We already operated on.\"\n+\t\t\t}\n+\t\t\tif (closeBracket)\n+\t\t\t{\n+\t\t\t\tcloseBracket = false;\n+\t\t\t\tbracket--; //We need to operate on the 1 less bracket\n+\t\t\t\tswitch(_operator[bracket])\n \t\t\t\t{\n-\t\t\t\t\tcase 1:\n+\t\t\t\t\tcase Operation_Add:\n \t\t\t\t\t{\n-\t\t\t\t\t\tsum[parentheses]+=playing;\n+\t\t\t\t\t\tsum[bracket] += sum[bracket+1];\n+\t\t\t\t\t\tbreak;\n \t\t\t\t\t}\n-\t\t\t\t\tcase 2:\n+\t\t\t\t\tcase Operation_Subtract:\n \t\t\t\t\t{\n-\t\t\t\t\t\tsum[parentheses]-=playing;\n+\t\t\t\t\t\tsum[bracket] -= sum[bracket+1];\n+\t\t\t\t\t\tbreak;\n \t\t\t\t\t}\n-\t\t\t\t\tcase 3:\n+\t\t\t\t\tcase Operation_Multiplication:\n \t\t\t\t\t{\n-\t\t\t\t\t\tsum[parentheses]*=playing;\n+\t\t\t\t\t\tsum[bracket] *= sum[bracket+1];\n+\t\t\t\t\t\tbreak;\n \t\t\t\t\t}\n-\t\t\t\t\tcase 4:\n+\t\t\t\t\tcase Operation_Division:\n \t\t\t\t\t{\n-\t\t\t\t\t\tsum[parentheses]/=playing;\n+\t\t\t\t\t\tsum[bracket] /= sum[bracket+1];\n+\t\t\t\t\t\tbreak;\n \t\t\t\t\t}\n-\t\t\t\t\tcase 5:\n+\t\t\t\t\tcase Operation_Exponential:\n \t\t\t\t\t{\n-\t\t\t\t\t\tsum[parentheses]=Pow(sum[parentheses], Float:playing);\n+\t\t\t\t\t\tsum[bracket] ^= sum[bracket+1];\n+\t\t\t\t\t\tbreak;\n \t\t\t\t\t}\n \t\t\t\t\tdefault:\n \t\t\t\t\t{\n-\t\t\t\t\t\tparentheses=1;\n+\t\t\t\t\t\t//We don't got an operation for this ending bracket.(eg:  \"))\")\n+\t\t\t\t\t\tsum[bracket] = sum[bracket+1];\n \t\t\t\t\t\tbreak;\n \t\t\t\t\t}\n \t\t\t\t}\n+\t\t\t\t_operator[bracket+1] = Operation_None;\n \t\t\t}\n-\n-\t\t\tif(value[0]!='\\0' && canAdd)\n+\t\t\tif (usePlayers)\n \t\t\t{\n-\t\t\t\tcanAdd=false;\n-\t\t\t\tswitch(_operator[parentheses])\n+\t\t\t\tusePlayers = false;\n+\t\t\t\t//Add sum with players.\n+\t\t\t\tswitch(_operator[bracket])\n \t\t\t\t{\n-\t\t\t\t\tcase 1:\n+\t\t\t\t\tcase Operation_Add:\n \t\t\t\t\t{\n-\t\t\t\t\t\tsum[parentheses]+=StringToFloat(value);\n-\t\t\t\t\t\tstrcopy(value, sizeof(value), \"\");\n+\t\t\t\t\t\tsum[bracket] += float(playing);\n+\t\t\t\t\t\tbreak;\n \t\t\t\t\t}\n-\t\t\t\t\tcase 2:\n+\t\t\t\t\tcase Operation_Subtract:\n+\t\t\t\t\t{\n+\t\t\t\t\t\tsum[bracket] -= float(playing);\n+\t\t\t\t\t\tbreak;\n+\t\t\t\t\t}\n+\t\t\t\t\tcase Operation_Multiplication:\n+\t\t\t\t\t{\n+\t\t\t\t\t\tsum[bracket] *= float(playing);\n+\t\t\t\t\t\tbreak;\n+\t\t\t\t\t}\n+\t\t\t\t\tcase Operation_Division:\n+\t\t\t\t\t{\n+\t\t\t\t\t\tsum[bracket] /= float(playing);\n+\t\t\t\t\t\tbreak;\n+\t\t\t\t\t}\n+\t\t\t\t\tcase Operation_Exponential:\n \t\t\t\t\t{\n-\t\t\t\t\t\tsum[parentheses]-=StringToFloat(value);\n-\t\t\t\t\t\tstrcopy(value, sizeof(value), \"\");\n+\t\t\t\t\t\tsum[bracket] ^= float(playing);\n+\t\t\t\t\t\tbreak;\n \t\t\t\t\t}\n-\t\t\t\t\tcase 3:\n+\t\t\t\t\tdefault:\n \t\t\t\t\t{\n-\t\t\t\t\t\tsum[parentheses]*=StringToFloat(value);\n-\t\t\t\t\t\tstrcopy(value, sizeof(value), \"\");\n+\t\t\t\t\t\tsum[bracket] = float(playing);\n+\t\t\t\t\t\tbreak;\n \t\t\t\t\t}\n-\t\t\t\t\tcase 4:\n+\t\t\t\t}\n+\t\t\t}\n+\t\t\t//TODO: Add useLives back.\n+\t\t\tif (value[0] != '\\0') //Value has something in it, by time we get here we already have all the value parsed(hopefully).\n+\t\t\t{\n+\t\t\t\tnew Float:tValue = StringToFloat(value);\n+\t\t\t\tstrcopy(value, sizeof(value), \"\");\n+\t\t\t\tvalue[0] = '\\0';\n+\t\t\t\tswitch(_operator[bracket])\n+\t\t\t\t{\n+\t\t\t\t\tcase Operation_Add:\n \t\t\t\t\t{\n-\t\t\t\t\t\tif(!StringToFloat(value))\n+\t\t\t\t\t\tsum[bracket] += tValue;\n+\t\t\t\t\t\tbreak;\n+\t\t\t\t\t}\n+\t\t\t\t\tcase Operation_Subtract:\n+\t\t\t\t\t{\n+\t\t\t\t\t\tsum[bracket] -= tValue;\n+\t\t\t\t\t\tbreak;\n+\t\t\t\t\t}\n+\t\t\t\t\tcase Operation_Multiplication:\n+\t\t\t\t\t{\n+\t\t\t\t\t\tsum[bracket] *= tValue;\n+\t\t\t\t\t\tbreak;\n+\t\t\t\t\t}\n+\t\t\t\t\tcase Operation_Division:\n+\t\t\t\t\t{\n+\t\t\t\t\t\tif (tValue <= 0.0)\n \t\t\t\t\t\t{\n-\t\t\t\t\t\t\tparentheses=1;\n+\t\t\t\t\t\t\tbracket = 0;\n+\t\t\t\t\t\t\tsum[bracket] = -999999.0; //Let malformation handle this.\n+\t\t\t\t\t\t\t_operator[bracket] = Operation_None;\n \t\t\t\t\t\t\tbreak;\n \t\t\t\t\t\t}\n-\t\t\t\t\t\tsum[parentheses]/=StringToFloat(value);\n-\t\t\t\t\t\tstrcopy(value, sizeof(value), \"\");\n+\t\t\t\t\t\tsum[bracket] /= tValue;\n+\t\t\t\t\t\tbreak;\n \t\t\t\t\t}\n-\t\t\t\t\tcase 5:\n+\t\t\t\t\tcase Operation_Exponential:\n \t\t\t\t\t{\n-\t\t\t\t\t\tsum[parentheses]=Pow(sum[parentheses], StringToFloat(value));\n-\t\t\t\t\t\tstrcopy(value, sizeof(value), \"\");\n+\t\t\t\t\t\tsum[bracket] ^= tValue;\n+\t\t\t\t\t\tbreak;\n \t\t\t\t\t}\n \t\t\t\t\tdefault:\n \t\t\t\t\t{\n-\t\t\t\t\t\tparentheses=1;\n+\t\t\t\t\t\tsum[bracket] = tValue;\n \t\t\t\t\t\tbreak;\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n-\t\t}\n-\n-\t\tif(mustClose)\n-\t\t{\n-\t\t\tmustClose=false;\n-\t\t\tparentheses--;\n-\t\t\tsum[parentheses]=sum[parentheses+1];\n+\t\t\t_operator[bracket] = Operation_None;\n \t\t}\n \t}\n-\n-\tnew health=RoundFloat(sum[0]);\n-\tif(!health && value[0]!='\\0')  //Check to see if we're dealing with a constant health value\n+\tnew result=RoundFloat(sum[0]);\n+\tif(!result && value[0]!='\\0')  //Check to see if we're dealing with a constant health value","path":"addons/sourcemod/scripting/freak_fortress_2.sp","position":334,"original_position":334,"commit_id":"068a15d0d50f756d74f2fc47f1dc5a4f7635a54b","original_commit_id":"068a15d0d50f756d74f2fc47f1dc5a4f7635a54b","user":{"login":"50Wliu","id":2766036,"avatar_url":"https://avatars.githubusercontent.com/u/2766036?v=3","gravatar_id":"","url":"https://api.github.com/users/50Wliu","html_url":"https://github.com/50Wliu","followers_url":"https://api.github.com/users/50Wliu/followers","following_url":"https://api.github.com/users/50Wliu/following{/other_user}","gists_url":"https://api.github.com/users/50Wliu/gists{/gist_id}","starred_url":"https://api.github.com/users/50Wliu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/50Wliu/subscriptions","organizations_url":"https://api.github.com/users/50Wliu/orgs","repos_url":"https://api.github.com/users/50Wliu/repos","events_url":"https://api.github.com/users/50Wliu/events{/privacy}","received_events_url":"https://api.github.com/users/50Wliu/received_events","type":"User","site_admin":false},"body":":( Is this still needed?  Can we find a way to get rid of it?","created_at":"2015-03-16T22:45:51Z","updated_at":"2015-03-16T22:45:51Z","html_url":"https://github.com/50DKP/FF2-Official/pull/228#discussion_r26535068","pull_request_url":"https://api.github.com/repos/50DKP/FF2-Official/pulls/228","_links":{"self":{"href":"https://api.github.com/repos/50DKP/FF2-Official/pulls/comments/26535068"},"html":{"href":"https://github.com/50DKP/FF2-Official/pull/228#discussion_r26535068"},"pull_request":{"href":"https://api.github.com/repos/50DKP/FF2-Official/pulls/228"}}},"pull_request":{"url":"https://api.github.com/repos/50DKP/FF2-Official/pulls/228","id":31248242,"html_url":"https://github.com/50DKP/FF2-Official/pull/228","diff_url":"https://github.com/50DKP/FF2-Official/pull/228.diff","patch_url":"https://github.com/50DKP/FF2-Official/pull/228.patch","issue_url":"https://api.github.com/repos/50DKP/FF2-Official/issues/228","number":228,"state":"open","locked":false,"title":"Clean up health calculator","user":{"login":"WildCard65","id":5003283,"avatar_url":"https://avatars.githubusercontent.com/u/5003283?v=3","gravatar_id":"","url":"https://api.github.com/users/WildCard65","html_url":"https://github.com/WildCard65","followers_url":"https://api.github.com/users/WildCard65/followers","following_url":"https://api.github.com/users/WildCard65/following{/other_user}","gists_url":"https://api.github.com/users/WildCard65/gists{/gist_id}","starred_url":"https://api.github.com/users/WildCard65/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/WildCard65/subscriptions","organizations_url":"https://api.github.com/users/WildCard65/orgs","repos_url":"https://api.github.com/users/WildCard65/repos","events_url":"https://api.github.com/users/WildCard65/events{/privacy}","received_events_url":"https://api.github.com/users/WildCard65/received_events","type":"User","site_admin":false},"body":"Should close #227 IDK haven't tested.\r\nBut it does look a lot neater and SHOULD handle all cases of operation that old system didn't(eg: (5+2)*(5+3) as well as constant health values);","created_at":"2015-03-16T14:32:15Z","updated_at":"2015-03-16T22:45:51Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b250c8caa70aeafb3644e51aaae5d82474127cc6","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/50DKP/FF2-Official/pulls/228/commits","review_comments_url":"https://api.github.com/repos/50DKP/FF2-Official/pulls/228/comments","review_comment_url":"https://api.github.com/repos/50DKP/FF2-Official/pulls/comments{/number}","comments_url":"https://api.github.com/repos/50DKP/FF2-Official/issues/228/comments","statuses_url":"https://api.github.com/repos/50DKP/FF2-Official/statuses/068a15d0d50f756d74f2fc47f1dc5a4f7635a54b","head":{"label":"WildCard65:ImprovedCalc","ref":"ImprovedCalc","sha":"068a15d0d50f756d74f2fc47f1dc5a4f7635a54b","user":{"login":"WildCard65","id":5003283,"avatar_url":"https://avatars.githubusercontent.com/u/5003283?v=3","gravatar_id":"","url":"https://api.github.com/users/WildCard65","html_url":"https://github.com/WildCard65","followers_url":"https://api.github.com/users/WildCard65/followers","following_url":"https://api.github.com/users/WildCard65/following{/other_user}","gists_url":"https://api.github.com/users/WildCard65/gists{/gist_id}","starred_url":"https://api.github.com/users/WildCard65/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/WildCard65/subscriptions","organizations_url":"https://api.github.com/users/WildCard65/orgs","repos_url":"https://api.github.com/users/WildCard65/repos","events_url":"https://api.github.com/users/WildCard65/events{/privacy}","received_events_url":"https://api.github.com/users/WildCard65/received_events","type":"User","site_admin":false},"repo":{"id":32328445,"name":"FF2-Official","full_name":"WildCard65/FF2-Official","owner":{"login":"WildCard65","id":5003283,"avatar_url":"https://avatars.githubusercontent.com/u/5003283?v=3","gravatar_id":"","url":"https://api.github.com/users/WildCard65","html_url":"https://github.com/WildCard65","followers_url":"https://api.github.com/users/WildCard65/followers","following_url":"https://api.github.com/users/WildCard65/following{/other_user}","gists_url":"https://api.github.com/users/WildCard65/gists{/gist_id}","starred_url":"https://api.github.com/users/WildCard65/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/WildCard65/subscriptions","organizations_url":"https://api.github.com/users/WildCard65/orgs","repos_url":"https://api.github.com/users/WildCard65/repos","events_url":"https://api.github.com/users/WildCard65/events{/privacy}","received_events_url":"https://api.github.com/users/WildCard65/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/WildCard65/FF2-Official","description":"Freak Fortress 2 is a one versus everyone mod for Team Fortress 2.  It is the successor to the Vs. Saxton Hale mode.","fork":true,"url":"https://api.github.com/repos/WildCard65/FF2-Official","forks_url":"https://api.github.com/repos/WildCard65/FF2-Official/forks","keys_url":"https://api.github.com/repos/WildCard65/FF2-Official/keys{/key_id}","collaborators_url":"https://api.github.com/repos/WildCard65/FF2-Official/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/WildCard65/FF2-Official/teams","hooks_url":"https://api.github.com/repos/WildCard65/FF2-Official/hooks","issue_events_url":"https://api.github.com/repos/WildCard65/FF2-Official/issues/events{/number}","events_url":"https://api.github.com/repos/WildCard65/FF2-Official/events","assignees_url":"https://api.github.com/repos/WildCard65/FF2-Official/assignees{/user}","branches_url":"https://api.github.com/repos/WildCard65/FF2-Official/branches{/branch}","tags_url":"https://api.github.com/repos/WildCard65/FF2-Official/tags","blobs_url":"https://api.github.com/repos/WildCard65/FF2-Official/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/WildCard65/FF2-Official/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/WildCard65/FF2-Official/git/refs{/sha}","trees_url":"https://api.github.com/repos/WildCard65/FF2-Official/git/trees{/sha}","statuses_url":"https://api.github.com/repos/WildCard65/FF2-Official/statuses/{sha}","languages_url":"https://api.github.com/repos/WildCard65/FF2-Official/languages","stargazers_url":"https://api.github.com/repos/WildCard65/FF2-Official/stargazers","contributors_url":"https://api.github.com/repos/WildCard65/FF2-Official/contributors","subscribers_url":"https://api.github.com/repos/WildCard65/FF2-Official/subscribers","subscription_url":"https://api.github.com/repos/WildCard65/FF2-Official/subscription","commits_url":"https://api.github.com/repos/WildCard65/FF2-Official/commits{/sha}","git_commits_url":"https://api.github.com/repos/WildCard65/FF2-Official/git/commits{/sha}","comments_url":"https://api.github.com/repos/WildCard65/FF2-Official/comments{/number}","issue_comment_url":"https://api.github.com/repos/WildCard65/FF2-Official/issues/comments{/number}","contents_url":"https://api.github.com/repos/WildCard65/FF2-Official/contents/{+path}","compare_url":"https://api.github.com/repos/WildCard65/FF2-Official/compare/{base}...{head}","merges_url":"https://api.github.com/repos/WildCard65/FF2-Official/merges","archive_url":"https://api.github.com/repos/WildCard65/FF2-Official/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/WildCard65/FF2-Official/downloads","issues_url":"https://api.github.com/repos/WildCard65/FF2-Official/issues{/number}","pulls_url":"https://api.github.com/repos/WildCard65/FF2-Official/pulls{/number}","milestones_url":"https://api.github.com/repos/WildCard65/FF2-Official/milestones{/number}","notifications_url":"https://api.github.com/repos/WildCard65/FF2-Official/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/WildCard65/FF2-Official/labels{/name}","releases_url":"https://api.github.com/repos/WildCard65/FF2-Official/releases{/id}","created_at":"2015-03-16T13:56:03Z","updated_at":"2015-03-16T13:56:04Z","pushed_at":"2015-03-16T22:41:42Z","git_url":"git://github.com/WildCard65/FF2-Official.git","ssh_url":"git@github.com:WildCard65/FF2-Official.git","clone_url":"https://github.com/WildCard65/FF2-Official.git","svn_url":"https://github.com/WildCard65/FF2-Official","homepage":"https://forums.alliedmods.net/forumdisplay.php?f=154","size":40582,"stargazers_count":0,"watchers_count":0,"language":"SourcePawn","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"stable"}},"base":{"label":"50DKP:stable","ref":"stable","sha":"0e47b1d5114febed29be5252c8da5633f8f53dcd","user":{"login":"50DKP","id":3885009,"avatar_url":"https://avatars.githubusercontent.com/u/3885009?v=3","gravatar_id":"","url":"https://api.github.com/users/50DKP","html_url":"https://github.com/50DKP","followers_url":"https://api.github.com/users/50DKP/followers","following_url":"https://api.github.com/users/50DKP/following{/other_user}","gists_url":"https://api.github.com/users/50DKP/gists{/gist_id}","starred_url":"https://api.github.com/users/50DKP/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/50DKP/subscriptions","organizations_url":"https://api.github.com/users/50DKP/orgs","repos_url":"https://api.github.com/users/50DKP/repos","events_url":"https://api.github.com/users/50DKP/events{/privacy}","received_events_url":"https://api.github.com/users/50DKP/received_events","type":"Organization","site_admin":false},"repo":{"id":9171664,"name":"FF2-Official","full_name":"50DKP/FF2-Official","owner":{"login":"50DKP","id":3885009,"avatar_url":"https://avatars.githubusercontent.com/u/3885009?v=3","gravatar_id":"","url":"https://api.github.com/users/50DKP","html_url":"https://github.com/50DKP","followers_url":"https://api.github.com/users/50DKP/followers","following_url":"https://api.github.com/users/50DKP/following{/other_user}","gists_url":"https://api.github.com/users/50DKP/gists{/gist_id}","starred_url":"https://api.github.com/users/50DKP/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/50DKP/subscriptions","organizations_url":"https://api.github.com/users/50DKP/orgs","repos_url":"https://api.github.com/users/50DKP/repos","events_url":"https://api.github.com/users/50DKP/events{/privacy}","received_events_url":"https://api.github.com/users/50DKP/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/50DKP/FF2-Official","description":"Freak Fortress 2 is a one versus everyone mod for Team Fortress 2.  It is the successor to the Vs. Saxton Hale mode.","fork":false,"url":"https://api.github.com/repos/50DKP/FF2-Official","forks_url":"https://api.github.com/repos/50DKP/FF2-Official/forks","keys_url":"https://api.github.com/repos/50DKP/FF2-Official/keys{/key_id}","collaborators_url":"https://api.github.com/repos/50DKP/FF2-Official/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/50DKP/FF2-Official/teams","hooks_url":"https://api.github.com/repos/50DKP/FF2-Official/hooks","issue_events_url":"https://api.github.com/repos/50DKP/FF2-Official/issues/events{/number}","events_url":"https://api.github.com/repos/50DKP/FF2-Official/events","assignees_url":"https://api.github.com/repos/50DKP/FF2-Official/assignees{/user}","branches_url":"https://api.github.com/repos/50DKP/FF2-Official/branches{/branch}","tags_url":"https://api.github.com/repos/50DKP/FF2-Official/tags","blobs_url":"https://api.github.com/repos/50DKP/FF2-Official/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/50DKP/FF2-Official/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/50DKP/FF2-Official/git/refs{/sha}","trees_url":"https://api.github.com/repos/50DKP/FF2-Official/git/trees{/sha}","statuses_url":"https://api.github.com/repos/50DKP/FF2-Official/statuses/{sha}","languages_url":"https://api.github.com/repos/50DKP/FF2-Official/languages","stargazers_url":"https://api.github.com/repos/50DKP/FF2-Official/stargazers","contributors_url":"https://api.github.com/repos/50DKP/FF2-Official/contributors","subscribers_url":"https://api.github.com/repos/50DKP/FF2-Official/subscribers","subscription_url":"https://api.github.com/repos/50DKP/FF2-Official/subscription","commits_url":"https://api.github.com/repos/50DKP/FF2-Official/commits{/sha}","git_commits_url":"https://api.github.com/repos/50DKP/FF2-Official/git/commits{/sha}","comments_url":"https://api.github.com/repos/50DKP/FF2-Official/comments{/number}","issue_comment_url":"https://api.github.com/repos/50DKP/FF2-Official/issues/comments{/number}","contents_url":"https://api.github.com/repos/50DKP/FF2-Official/contents/{+path}","compare_url":"https://api.github.com/repos/50DKP/FF2-Official/compare/{base}...{head}","merges_url":"https://api.github.com/repos/50DKP/FF2-Official/merges","archive_url":"https://api.github.com/repos/50DKP/FF2-Official/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/50DKP/FF2-Official/downloads","issues_url":"https://api.github.com/repos/50DKP/FF2-Official/issues{/number}","pulls_url":"https://api.github.com/repos/50DKP/FF2-Official/pulls{/number}","milestones_url":"https://api.github.com/repos/50DKP/FF2-Official/milestones{/number}","notifications_url":"https://api.github.com/repos/50DKP/FF2-Official/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/50DKP/FF2-Official/labels{/name}","releases_url":"https://api.github.com/repos/50DKP/FF2-Official/releases{/id}","created_at":"2013-04-02T14:10:33Z","updated_at":"2015-03-14T21:00:13Z","pushed_at":"2015-03-14T21:00:13Z","git_url":"git://github.com/50DKP/FF2-Official.git","ssh_url":"git@github.com:50DKP/FF2-Official.git","clone_url":"https://github.com/50DKP/FF2-Official.git","svn_url":"https://github.com/50DKP/FF2-Official","homepage":"https://forums.alliedmods.net/forumdisplay.php?f=154","size":40582,"stargazers_count":8,"watchers_count":8,"language":"SourcePawn","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":13,"mirror_url":null,"open_issues_count":46,"forks":13,"open_issues":46,"watchers":8,"default_branch":"stable"}},"_links":{"self":{"href":"https://api.github.com/repos/50DKP/FF2-Official/pulls/228"},"html":{"href":"https://github.com/50DKP/FF2-Official/pull/228"},"issue":{"href":"https://api.github.com/repos/50DKP/FF2-Official/issues/228"},"comments":{"href":"https://api.github.com/repos/50DKP/FF2-Official/issues/228/comments"},"review_comments":{"href":"https://api.github.com/repos/50DKP/FF2-Official/pulls/228/comments"},"review_comment":{"href":"https://api.github.com/repos/50DKP/FF2-Official/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/50DKP/FF2-Official/pulls/228/commits"},"statuses":{"href":"https://api.github.com/repos/50DKP/FF2-Official/statuses/068a15d0d50f756d74f2fc47f1dc5a4f7635a54b"}}}}