This commit is contained in:
Ryan committed 2017-05-28 19:10:00 +01:00
commit 1442984686
142 files changed
+6493 -978

No files matched your search

+889
View File
@@ -0,0 +1,889 @@
{
"id": 1,
"title": "General info",
"originalTitle": "General info",
"tags": [],
"style": "dark",
"timezone": "browser",
"editable": true,
"hideControls": false,
"sharedCrosshair": false,
"rows": [
{
"collapse": false,
"editable": true,
"height": "25px",
"panels": [
{
"cacheTimeout": null,
"colorBackground": false,
"colorValue": false,
"colors": [
"rgba(245, 54, 54, 0.9)",
"rgba(237, 129, 40, 0.89)",
"rgba(50, 172, 45, 0.97)"
],
"datasource": null,
"editable": true,
"error": false,
"format": "none",
"id": 5,
"interval": null,
"isNew": true,
"links": [],
"maxDataPoints": 100,
"nullPointMode": "connected",
"nullText": null,
"postfix": "",
"postfixFontSize": "50%",
"prefix": "",
"prefixFontSize": "50%",
"span": 3,
"sparkline": {
"fillColor": "rgba(31, 118, 189, 0.18)",
"full": false,
"lineColor": "rgb(31, 120, 193)",
"show": false
},
"targets": [
{
"dsType": "influxdb",
"groupBy": [
{
"params": [
"auto"
],
"type": "time"
}
],
"measurement": "online_players",
"policy": "default",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"type": "field",
"params": [
"value"
]
},
{
"type": "last",
"params": []
}
]
],
"tags": [
{
"key": "realm",
"operator": "=~",
"value": "/^$realm$/"
}
]
}
],
"thresholds": "",
"title": "Online players",
"type": "singlestat",
"valueFontSize": "80%",
"valueMaps": [
{
"op": "=",
"text": "N/A",
"value": "null"
}
],
"valueName": "current",
"timeFrom": null,
"timeShift": null,
"hideTimeOverride": false
},
{
"cacheTimeout": null,
"colorBackground": false,
"colorValue": false,
"colors": [
"rgba(245, 54, 54, 0.9)",
"rgba(237, 129, 40, 0.89)",
"rgba(50, 172, 45, 0.97)"
],
"datasource": null,
"editable": true,
"error": false,
"format": "none",
"id": 6,
"interval": null,
"isNew": true,
"links": [],
"maxDataPoints": 100,
"nullPointMode": "connected",
"nullText": null,
"postfix": "",
"postfixFontSize": "50%",
"prefix": "",
"prefixFontSize": "50%",
"span": 3,
"sparkline": {
"fillColor": "rgba(31, 118, 189, 0.18)",
"full": false,
"lineColor": "rgb(31, 120, 193)",
"show": false
},
"targets": [
{
"dsType": "influxdb",
"groupBy": [
{
"params": [
"auto"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"measurement": "update_time_diff",
"policy": "default",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"value"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": [
{
"key": "realm",
"operator": "=~",
"value": "/^$realm$/"
}
]
}
],
"thresholds": "",
"title": "Update diff (avg)",
"type": "singlestat",
"valueFontSize": "80%",
"valueMaps": [
{
"op": "=",
"text": "N/A",
"value": "null"
}
],
"valueName": "avg",
"timeFrom": "1m"
},
{
"cacheTimeout": null,
"colorBackground": false,
"colorValue": false,
"colors": [
"rgba(245, 54, 54, 0.9)",
"rgba(237, 129, 40, 0.89)",
"rgba(50, 172, 45, 0.97)"
],
"datasource": null,
"editable": true,
"error": false,
"format": "none",
"id": 7,
"interval": null,
"isNew": true,
"links": [],
"maxDataPoints": 100,
"nullPointMode": "connected",
"nullText": null,
"postfix": "",
"postfixFontSize": "50%",
"prefix": "",
"prefixFontSize": "50%",
"span": 3,
"sparkline": {
"fillColor": "rgba(31, 118, 189, 0.18)",
"full": false,
"lineColor": "rgb(31, 120, 193)",
"show": false
},
"targets": [
{
"dsType": "influxdb",
"groupBy": [
{
"params": [
"auto"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"measurement": "update_time_diff",
"policy": "default",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"value"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": []
}
],
"thresholds": "",
"title": "Update diff (avg)",
"transparent": false,
"type": "singlestat",
"valueFontSize": "80%",
"valueMaps": [
{
"op": "=",
"text": "N/A",
"value": "null"
}
],
"valueName": "avg",
"timeFrom": "5m"
},
{
"cacheTimeout": null,
"colorBackground": false,
"colorValue": false,
"colors": [
"rgba(245, 54, 54, 0.9)",
"rgba(237, 129, 40, 0.89)",
"rgba(50, 172, 45, 0.97)"
],
"datasource": null,
"editable": true,
"error": false,
"format": "none",
"id": 8,
"interval": null,
"isNew": true,
"links": [],
"maxDataPoints": 100,
"nullPointMode": "connected",
"nullText": null,
"postfix": "",
"postfixFontSize": "50%",
"prefix": "",
"prefixFontSize": "50%",
"span": 3,
"sparkline": {
"fillColor": "rgba(31, 118, 189, 0.18)",
"full": false,
"lineColor": "rgb(31, 120, 193)",
"show": false
},
"targets": [
{
"dsType": "influxdb",
"groupBy": [
{
"params": [
"auto"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"measurement": "update_time_diff",
"policy": "default",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"value"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": [
{
"key": "realm",
"operator": "=~",
"value": "/^$realm$/"
}
]
}
],
"thresholds": "",
"title": "Update diff (avg)",
"type": "singlestat",
"valueFontSize": "80%",
"valueMaps": [
{
"op": "=",
"text": "N/A",
"value": "null"
}
],
"valueName": "avg",
"timeFrom": "15m",
"timeShift": null
}
],
"title": "New row"
},
{
"collapse": false,
"editable": true,
"height": "250px",
"panels": [
{
"aliasColors": {},
"bars": false,
"datasource": "Influx",
"editable": true,
"error": false,
"fill": 1,
"grid": {
"leftLogBase": 1,
"leftMax": null,
"leftMin": null,
"rightLogBase": 1,
"rightMax": null,
"rightMin": null,
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
"id": 1,
"isNew": true,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "Update diff",
"dsType": "influxdb",
"groupBy": [
{
"params": [
"$interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"measurement": "update_time_diff",
"policy": "default",
"query": "SELECT mean(\"value\") FROM \"update_time_diff\" WHERE \"realm\" =~ /$realm$/ AND $timeFilter GROUP BY time($interval) fill(null)",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"value"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": [
{
"key": "realm",
"operator": "=~",
"value": "/$realm$/"
}
]
}
],
"timeFrom": null,
"timeShift": null,
"title": "Update diff",
"tooltip": {
"msResolution": false,
"shared": true,
"value_type": "cumulative"
},
"type": "graph",
"x-axis": true,
"xaxis": {
"show": true
},
"y-axis": true,
"y_formats": [
"ms",
"short"
],
"yaxes": [
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
}
],
"title": "Row"
},
{
"collapse": false,
"editable": true,
"height": "250px",
"panels": [
{
"aliasColors": {},
"bars": false,
"datasource": "Influx",
"editable": true,
"error": false,
"fill": 1,
"grid": {
"leftLogBase": 1,
"leftMax": null,
"leftMin": null,
"rightLogBase": 1,
"rightMax": null,
"rightMin": null,
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
"id": 4,
"isNew": true,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "Online players",
"dsType": "influxdb",
"groupBy": [
{
"params": [
"$interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"measurement": "online_players",
"policy": "default",
"query": "SELECT mean(\"value\") FROM \"online_players\" WHERE \"realm\" =~ /$realm$/ AND $timeFilter GROUP BY time($interval) fill(null)",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"value"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": [
{
"key": "realm",
"operator": "=~",
"value": "/$realm$/"
}
]
}
],
"timeFrom": null,
"timeShift": null,
"title": "Online players",
"tooltip": {
"msResolution": false,
"shared": true,
"value_type": "cumulative"
},
"type": "graph",
"x-axis": true,
"xaxis": {
"show": true
},
"y-axis": true,
"y_formats": [
"short",
"short"
],
"yaxes": [
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
}
],
"title": "New row"
},
{
"collapse": false,
"editable": true,
"height": "250px",
"panels": [
{
"aliasColors": {},
"bars": false,
"datasource": "Influx",
"editable": true,
"error": false,
"fill": 1,
"grid": {
"leftLogBase": 1,
"leftMax": null,
"leftMin": null,
"rightLogBase": 1,
"rightMax": null,
"rightMin": null,
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
"id": 3,
"isNew": true,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "Logouts",
"transform": "negative-Y"
}
],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "Logins",
"dsType": "influxdb",
"groupBy": [
{
"params": [
"$interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"measurement": "player_events",
"policy": "default",
"query": "SELECT count(\"text\") FROM \"player_events\" WHERE \"realm\" =~ /$realm$/ AND \"title\" = 'Login' AND $timeFilter GROUP BY time($interval) fill(0)",
"rawQuery": true,
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"text"
],
"type": "field"
},
{
"params": [],
"type": "count"
}
]
],
"tags": [
{
"key": "realm",
"operator": "=",
"value": "Trinity"
}
]
},
{
"alias": "Logouts",
"dsType": "influxdb",
"groupBy": [
{
"params": [
"$interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"policy": "default",
"query": "SELECT count(\"text\") FROM \"player_events\" WHERE \"realm\" =~ /$realm$/ AND \"title\" = 'Logout' AND $timeFilter GROUP BY time($interval) fill(0)",
"rawQuery": true,
"refId": "B",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"value"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": []
}
],
"timeFrom": null,
"timeShift": null,
"title": "Player login/logout",
"tooltip": {
"msResolution": false,
"shared": true,
"value_type": "cumulative"
},
"type": "graph",
"x-axis": true,
"xaxis": {
"show": true
},
"y-axis": true,
"y_formats": [
"short",
"short"
],
"yaxes": [
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
}
],
"title": "New row"
}
],
"time": {
"from": "now-15m",
"to": "now"
},
"timepicker": {
"now": true,
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
]
},
"templating": {
"list": [
{
"allFormat": "regex values",
"current": {
"text": "Trinity",
"value": "Trinity"
},
"datasource": null,
"includeAll": false,
"multi": false,
"multiFormat": "regex values",
"name": "realm",
"options": [
{
"text": "Trinity",
"value": "Trinity",
"selected": true
}
],
"query": "show tag values from events with key = realm",
"refresh": 1,
"regex": "",
"type": "query"
}
]
},
"annotations": {
"list": [
{
"datasource": "Influx",
"enable": true,
"iconColor": "#C0C6BE",
"iconSize": 13,
"lineColor": "rgba(255, 96, 96, 0.592157)",
"name": "Global Events",
"query": "select title, text from events where $timeFilter and realm =~ /$realm$/",
"showLine": true,
"textColumn": "text",
"titleColumn": "title"
}
]
},
"refresh": "1m",
"schemaVersion": 12,
"version": 7,
"links": []
}
+339
View File
@@ -0,0 +1,339 @@
{
"id": 2,
"title": "Maps, vmaps and mmaps",
"originalTitle": "Maps, vmaps and mmaps",
"tags": [],
"style": "dark",
"timezone": "browser",
"editable": true,
"hideControls": false,
"sharedCrosshair": false,
"rows": [
{
"collapse": false,
"editable": true,
"height": "250px",
"panels": [
{
"aliasColors": {},
"bars": false,
"datasource": "Influx",
"editable": true,
"error": false,
"fill": 1,
"grid": {
"leftLogBase": 1,
"leftMax": null,
"leftMin": null,
"rightLogBase": 1,
"rightMax": null,
"rightMin": null,
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
"id": 2,
"isNew": true,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "Unload tile",
"transform": "negative-Y"
}
],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "Load tile",
"dsType": "influxdb",
"groupBy": [
{
"params": [
"$interval"
],
"type": "time"
},
{
"params": [
"0"
],
"type": "fill"
}
],
"query": "SELECT count(\"title\") FROM \"map_events\" WHERE \"realm\" =~ /$realm$/ AND \"title\" = 'LoadMapTile' AND $timeFilter GROUP BY time($interval) fill(0)",
"rawQuery": true,
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"value"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": []
},
{
"alias": "Unload tile",
"dsType": "influxdb",
"groupBy": [
{
"params": [
"$interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"query": "SELECT count(\"title\") FROM \"map_events\" WHERE \"realm\" =~ /$realm$/ AND \"title\" = 'UnloadMapTile' AND $timeFilter GROUP BY time($interval) fill(0)",
"rawQuery": true,
"refId": "B",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"value"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": []
}
],
"timeFrom": null,
"timeShift": null,
"title": "Map",
"tooltip": {
"shared": true,
"value_type": "cumulative"
},
"type": "graph",
"x-axis": true,
"y-axis": true,
"y_formats": [
"short",
"short"
]
}
],
"title": "Row"
},
{
"collapse": false,
"editable": true,
"height": "250px",
"panels": [
{
"aliasColors": {},
"bars": false,
"datasource": "Influx",
"editable": true,
"error": false,
"fill": 1,
"grid": {
"leftLogBase": 1,
"leftMax": null,
"leftMin": null,
"rightLogBase": 1,
"rightMax": null,
"rightMin": null,
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
"id": 1,
"isNew": true,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "Pathfinding queries",
"dsType": "influxdb",
"groupBy": [
{
"params": [
"$interval"
],
"type": "time"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"query": "SELECT count(\"title\") FROM \"mmap_events\" WHERE \"realm\" =~ /$realm$/ AND \"title\" = 'CalculatePath' AND $timeFilter GROUP BY time($interval) fill(0)",
"rawQuery": true,
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"value"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": []
}
],
"timeFrom": null,
"timeShift": null,
"title": "MMap",
"tooltip": {
"shared": true,
"value_type": "cumulative"
},
"type": "graph",
"x-axis": true,
"y-axis": true,
"y_formats": [
"short",
"short"
]
}
],
"title": "New row"
}
],
"time": {
"from": "now-15m",
"to": "now"
},
"timepicker": {
"now": true,
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
]
},
"templating": {
"list": [
{
"allFormat": "regex values",
"current": {
"text": "Trinity",
"value": "Trinity"
},
"datasource": "Influx",
"includeAll": false,
"multi": false,
"multiFormat": "regex values",
"name": "realm",
"options": [
{
"text": "Trinity",
"value": "Trinity",
"selected": true
}
],
"query": "show tag values from events with key = realm",
"refresh": true,
"type": "query"
}
]
},
"annotations": {
"list": [
{
"datasource": "Influx",
"enable": true,
"iconColor": "#C0C6BE",
"iconSize": 13,
"lineColor": "rgba(255, 96, 96, 0.592157)",
"name": "Global Events",
"query": "select title, text from events where $timeFilter and realm =~ /$realm$/",
"showLine": true,
"textColumn": "text",
"titleColumn": "title"
}
]
},
"refresh": "1m",
"schemaVersion": 8,
"version": 11,
"links": []
}
+242
View File
@@ -0,0 +1,242 @@
{
"id": 3,
"title": "Network",
"originalTitle": "Network",
"tags": [],
"style": "dark",
"timezone": "browser",
"editable": true,
"hideControls": false,
"sharedCrosshair": false,
"rows": [
{
"collapse": false,
"editable": true,
"height": "250px",
"panels": [
{
"aliasColors": {},
"bars": false,
"datasource": "Influx",
"editable": true,
"error": false,
"fill": 1,
"grid": {
"leftLogBase": 1,
"leftMax": null,
"leftMin": null,
"rightLogBase": 1,
"rightMax": null,
"rightMin": null,
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
"id": 1,
"isNew": true,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "Processed packets",
"dsType": "influxdb",
"groupBy": [
{
"params": [
"$interval"
],
"type": "time"
},
{
"params": [
"0"
],
"type": "fill"
}
],
"measurement": "processed_packets",
"query": "SELECT sum(\"value\") FROM \"processed_packets\" WHERE \"realm\" =~ /$realm$/ AND $timeFilter GROUP BY time($interval) fill(0)",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"value"
],
"type": "field"
},
{
"params": [],
"type": "sum"
}
]
],
"tags": [
{
"key": "realm",
"operator": "=~",
"value": "/$realm$/"
}
]
},
{
"alias": "Processed packets / mean per session",
"dsType": "influxdb",
"groupBy": [
{
"params": [
"$interval"
],
"type": "time"
},
{
"params": [
"0"
],
"type": "fill"
}
],
"measurement": "processed_packets",
"query": "SELECT mean(\"value\") FROM \"processed_packets\" WHERE \"realm\" =~ /$realm$/ AND $timeFilter GROUP BY time($interval) fill(0)",
"refId": "B",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"value"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": [
{
"key": "realm",
"operator": "=~",
"value": "/$realm$/"
}
]
}
],
"timeFrom": null,
"timeShift": null,
"title": "Processed packets",
"tooltip": {
"shared": true,
"value_type": "cumulative"
},
"type": "graph",
"x-axis": true,
"y-axis": true,
"y_formats": [
"short",
"short"
]
}
],
"title": "Row"
}
],
"time": {
"from": "now-15m",
"to": "now"
},
"timepicker": {
"now": true,
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
]
},
"templating": {
"list": [
{
"allFormat": "regex values",
"current": {
"text": "Trinity",
"value": "Trinity"
},
"datasource": "Influx",
"includeAll": false,
"multi": false,
"multiFormat": "regex values",
"name": "realm",
"options": [
{
"text": "Trinity",
"value": "Trinity",
"selected": true
}
],
"query": "show tag values from events with key = realm",
"refresh": true,
"type": "query"
}
]
},
"annotations": {
"list": [
{
"datasource": "Influx",
"enable": true,
"iconColor": "#C0C6BE",
"iconSize": 13,
"lineColor": "rgba(255, 96, 96, 0.592157)",
"name": "Global Events",
"query": "select title, text from events where $timeFilter and realm =~ /$realm$/",
"showLine": true,
"textColumn": "text",
"titleColumn": "title"
}
]
},
"refresh": "1m",
"schemaVersion": 8,
"version": 7,
"links": []
}
+1
View File
@@ -1,5 +1,6 @@
if (BUILD_SHARED_LIBS)
set(SRCS
src/efsw/Debug.cpp
src/efsw/DirectorySnapshot.cpp
src/efsw/DirectorySnapshotDiff.cpp
src/efsw/DirWatcherGeneric.cpp
+11 -11
View File
@@ -657,20 +657,20 @@ DROP TABLE IF EXISTS `creature_text`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `creature_text` (
`entry` mediumint(8) unsigned NOT NULL DEFAULT '0',
`groupid` tinyint(3) unsigned NOT NULL DEFAULT '0',
`id` tinyint(3) unsigned NOT NULL DEFAULT '0',
`text` longtext,
`type` tinyint(3) unsigned NOT NULL DEFAULT '0',
`language` tinyint(3) unsigned NOT NULL DEFAULT '0',
`probability` float NOT NULL DEFAULT '0',
`emote` mediumint(8) unsigned NOT NULL DEFAULT '0',
`duration` mediumint(8) unsigned NOT NULL DEFAULT '0',
`sound` mediumint(8) unsigned NOT NULL DEFAULT '0',
`CreatureID` mediumint(8) unsigned NOT NULL DEFAULT '0',
`GroupID` tinyint(3) unsigned NOT NULL DEFAULT '0',
`ID` tinyint(3) unsigned NOT NULL DEFAULT '0',
`Text` longtext,
`Type` tinyint(3) unsigned NOT NULL DEFAULT '0',
`Language` tinyint(3) unsigned NOT NULL DEFAULT '0',
`Probability` float NOT NULL DEFAULT '0',
`Emote` mediumint(8) unsigned NOT NULL DEFAULT '0',
`Duration` mediumint(8) unsigned NOT NULL DEFAULT '0',
`Sound` mediumint(8) unsigned NOT NULL DEFAULT '0',
`BroadcastTextId` mediumint(6) NOT NULL DEFAULT '0',
`TextRange` tinyint(3) unsigned NOT NULL DEFAULT '0',
`comment` varchar(255) DEFAULT '',
PRIMARY KEY (`entry`,`groupid`,`id`)
PRIMARY KEY (`CreatureID`,`GroupID`,`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -0,0 +1,128 @@
-- Fixup Blackrock Worg
UPDATE `creature_template` SET `flags_extra`=2 WHERE `entry`=49871;
-- Fix up Blackrock Spy Entry: 49874
UPDATE `creature` SET `spawndist`=0,`MovementType`=0 WHERE `id`=49874;
UPDATE `creature_template_addon` SET `auras`='80676' WHERE `entry`=49874;
DELETE FROM `smart_scripts` WHERE `entryorguid`=49874 AND `id` IN (1,2);
-- Pathing for Blackrock Spy Entry: 49874 'TDB FORMAT'
SET @NPC := 279993;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-9017.051,`position_y`=-186.1771,`position_z`=76.99114 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, '92857');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,-9017.051,-186.1771,76.99114,0,0,0,0,100,0),
(@PATH,2,-9022.958,-180.9201,76.68597,0,0,0,0,100,0),
(@PATH,3,-9025.415,-177.9479,76.53362,0,0,0,0,100,0),
(@PATH,4,-9026.482,-173.7778,77.33782,0,0,0,0,100,0),
(@PATH,5,-9024.309,-167.1191,78.75359,0,0,0,0,100,0),
(@PATH,6,-9026.482,-173.7773,77.37859,0,0,0,0,100,0),
(@PATH,7,-9025.415,-177.9479,76.53362,0,0,0,0,100,0),
(@PATH,8,-9022.958,-180.9201,76.68597,0,0,0,0,100,0);
-- Pathing for Blackrock Spy Entry: 49874 'TDB FORMAT'
SET @NPC := 279970;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-8975.587,`position_y`=-210.8681,`position_z`=74.38621 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, '92857');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,-8975.587,-210.8681,74.38621,0,0,0,0,100,0),
(@PATH,2,-8982.348,-208.6354,73.94993,0,0,0,0,100,0),
(@PATH,3,-8982.997,-201.5851,74.64426,0,0,0,0,100,0),
(@PATH,4,-8982.348,-208.6354,73.94993,0,0,0,0,100,0);
-- Pathing for Blackrock Spy Entry: 49874 'TDB FORMAT'
SET @NPC := 279996;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-8959.651,`position_y`=-62.3316,`position_z`=92.46779 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, '92857');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,-8959.651,-62.3316,92.46779,0,0,0,0,100,0),
(@PATH,2,-8962.094,-58.05729,92.43849,0,0,0,0,100,0),
(@PATH,3,-8966.278,-58.07465,92.18849,0,0,0,0,100,0),
(@PATH,4,-8966.953,-59.75868,91.97262,0,0,0,0,100,0),
(@PATH,5,-8962.488,-59.94618,92.25246,0,0,0,0,100,0),
(@PATH,6,-8966.278,-58.07465,92.18849,0,0,0,0,100,0),
(@PATH,7,-8962.094,-58.05729,92.43849,0,0,0,0,100,0),
(@PATH,8,-8958.906,-60.77083,92.43849,0,0,0,0,100,0);
-- Pathing for Blackrock Spy Entry: 49874 'TDB FORMAT'
SET @NPC := 279821;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-8937.439,`position_y`=-246.7691,`position_z`=79.06224 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, '92857');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,-8937.439,-246.7691,79.06224,0,0,0,0,100,0),
(@PATH,2,-8930.792,-241.4774,79.49934,0,0,0,0,100,0),
(@PATH,3,-8933.103,-246.651,78.92879,0,0,0,0,100,0);
-- Pathing for Blackrock Spy Entry: 49874 'TDB FORMAT'
SET @NPC := 279952;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-8906.613,`position_y`=-39.17014,`position_z`=89.14458 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, '92857');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,-8906.613,-39.17014,89.14458,0,0,0,0,100,0),
(@PATH,2,-8900.656,-43.30903,86.97442,0,0,0,0,100,0),
(@PATH,3,-8906.398,-39.31641,89.20806,0,0,0,0,100,0),
(@PATH,4,-8911.556,-40.54688,89.57232,0,0,0,0,100,0);
-- Pathing for Blackrock Spy Entry: 49874 'TDB FORMAT'
SET @NPC := 279950;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-8926.372,`position_y`=-68.80903,`position_z`=89.75582 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, '92857');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,-8926.372,-68.80903,89.75582,0,0,0,0,100,0),
(@PATH,2,-8929.808,-68.91666,89.97311,0,0,0,0,100,0),
(@PATH,3,-8922.819,-71.70834,89.15719,0,0,0,0,100,0);
-- Pathing for Blackrock Spy Entry: 49874 'TDB FORMAT'
SET @NPC := 279936;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-8878.366,`position_y`=-92.23785,`position_z`=83.897 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, '92857');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,-8878.366,-92.23785,83.897,0,0,0,0,100,0),
(@PATH,2,-8873.397,-91.30903,83.17702,0,0,0,0,100,0),
(@PATH,3,-8870.214,-93.74132,82.54983,0,0,0,0,100,0);
-- Pathing for Blackrock Spy Entry: 49874 'TDB FORMAT'
SET @NPC := 279918;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-8832.973,`position_y`=-120.3351,`position_z`=80.8506 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, '92857');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,-8832.973,-120.3351,80.8506,0,0,0,0,100,0),
(@PATH,2,-8831.473,-124.0399,80.79787,0,0,0,0,100,0),
(@PATH,3,-8837.326,-118.8611,80.59762,0,0,0,0,100,0);
-- Pathing for Blackrock Spy Entry: 49874 'TDB FORMAT'
SET @NPC := 279756;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-8784.361,`position_y`=-78.68403,`position_z`=89.64127 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, '92857');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,-8784.361,-78.68403,89.64127,0,0,0,0,100,0),
(@PATH,2,-8776.549,-79.15799,89.33903,0,0,0,0,100,0),
(@PATH,3,-8772.433,-83.78646,88.66227,0,0,0,0,100,0),
(@PATH,4,-8776.549,-79.15799,89.33903,0,0,0,0,100,0);
@@ -0,0 +1,141 @@
DELETE FROM `quest_request_items` WHERE `ID` IN (28757,28762,28763,28764,28765,28766,28767,29078,28759,28769,28770,28771,28772,28773,28774,29079,28791,28792,28793,28794,28795,28796,28797,29081,28806,28808,28809,28810,28811,28812,28813,29082);
INSERT INTO `quest_request_items` (`ID`,`EmoteOnComplete`,`EmoteOnIncomplete`,`CompletionText`,`VerifiedBuild`) VALUES
(28757,6,0, 'Have you beaten back the Blackrock worgs?',0),
(28762,6,0, 'Have you beaten back the Blackrock worgs?',0),
(28763,6,0, 'Have you beaten back the Blackrock worgs?',0),
(28764,6,0, 'Have you beaten back the Blackrock worgs?',0),
(28765,6,0, 'Have you beaten back the Blackrock worgs?',0),
(28766,6,0, 'Have you beaten back the Blackrock worgs?',0),
(28767,6,0, 'Have you beaten back the Blackrock worgs?',0),
(29078,6,0, 'Have you beaten back the Blackrock worgs?',0),
(28759,5,0, 'Kill the spies!',0),
(28769,5,0, 'Kill the spies!',0),
(28770,5,0, 'Kill the spies!',0),
(28771,5,0, 'Kill the spies!',0),
(28772,5,0, 'Kill the spies!',0),
(28773,5,0, 'Kill the spies!',0),
(28774,5,0, 'Kill the spies!',0),
(29079,5,0, 'Kill the spies!',0),
(28791,0,0, 'Kill the goblin assassins',0),
(28792,0,0, 'Kill the goblin assassins',0),
(28793,0,0, 'Kill the goblin assassins',0),
(28794,0,0, 'Kill the goblin assassins',0),
(28795,0,0, 'Kill the goblin assassins',0),
(28796,0,0, 'Kill the goblin assassins',0),
(28797,0,0, 'Kill the goblin assassins',0),
(29081,0,0, 'Kill the goblin assassins',0),
(28806,5,0, 'Rescue our Soldiers!',0),
(28808,5,0, 'Rescue our Soldiers!',0),
(28809,5,0, 'Rescue our Soldiers!',0),
(28810,5,0, 'Rescue our Soldiers!',0),
(28811,5,0, 'Rescue our Soldiers!',0),
(28812,5,0, 'Rescue our Soldiers!',0),
(28813,5,0, 'Rescue our Soldiers!',0),
(29082,5,0, 'Rescue our Soldiers!',0);
DELETE FROM `quest_offer_reward` WHERE `ID` IN (28757,28762,28763,28764,28765,28766,28767,29078,28759,28769,28770,28771,28772,28773,28774,29079,28780,28784,28785,28786,28787,28788,28789,29080,28806,28808,28809,28810,28811,28812,28813,29082,28791,28792,28793,28794,28795,28796,28797,29081,28817,28818,28819,28820,28821,28822,28823,29083);
INSERT INTO `quest_offer_reward` (`ID`,`Emote1`,`Emote2`,`Emote3`,`Emote4`,`EmoteDelay1`,`EmoteDelay2`,`EmoteDelay3`,`EmoteDelay4`,`RewardText`,`VerifiedBuild`) VALUES
(28757,1,1,0,0,0,0,0,0, 'You''ve bought us a little time, $n, but we''ve got even bigger problems to deal with now.',0),
(28762,1,1,0,0,0,0,0,0, 'You''ve bought us a little time, $n, but we''ve got even bigger problems to deal with now.',0),
(28763,1,1,0,0,0,0,0,0, 'You''ve bought us a little time, $n, but we''ve got even bigger problems to deal with now.',0),
(28764,1,1,0,0,0,0,0,0, 'You''ve bought us a little time, $n, but we''ve got even bigger problems to deal with now.',0),
(28765,1,1,0,0,0,0,0,0, 'You''ve bought us a little time, $n, but we''ve got even bigger problems to deal with now.',0),
(28766,1,1,0,0,0,0,0,0, 'You''ve bought us a little time, $n, but we''ve got even bigger problems to deal with now.',0),
(28767,1,1,0,0,0,0,0,0, 'You''ve bought us a little time, $n, but we''ve got even bigger problems to deal with now.',0),
(29078,1,1,0,0,0,0,0,0, 'You''ve bought us a little time, $n, but we''ve got even bigger problems to deal with now.',0),
(28759,21,1,5,0,0,0,0,0, 'Excellent work, $n. You''ve turned out to be quite an asset to this garrison. It''s time for you to train!',0),
(28769,21,1,5,0,0,0,0,0, 'Excellent work, $n. You''ve turned out to be quite an asset to this garrison. It''s time for you to train!',0),
(28770,21,1,5,0,0,0,0,0, 'Excellent work, $n. You''ve turned out to be quite an asset to this garrison. It''s time for you to train!',0),
(28771,21,1,5,0,0,0,0,0, 'Excellent work, $n. You''ve turned out to be quite an asset to this garrison. It''s time for you to train!',0),
(28772,21,1,5,0,0,0,0,0, 'Excellent work, $n. You''ve turned out to be quite an asset to this garrison. It''s time for you to train!',0),
(28773,21,1,5,0,0,0,0,0, 'Excellent work, $n. You''ve turned out to be quite an asset to this garrison. It''s time for you to train!',0),
(28774,21,1,5,0,0,0,0,0, 'Excellent work, $n. You''ve turned out to be quite an asset to this garrison. It''s time for you to train!',0),
(29079,21,1,5,0,0,0,0,0, 'Excellent work, $n. You''ve turned out to be quite an asset to this garrison. It''s time for you to train!',0),
(28780,0,0,0,0,0,0,0,0, 'It''s true, we were ambushed. I don''t dare send any more soldiers out there and risk losing them too. I need a volunteer. Someone willing to risk their life!',0),
(28784,0,0,0,0,0,0,0,0, 'It''s true, we were ambushed. I don''t dare send any more soldiers out there and risk losing them too. I need a volunteer. Someone willing to risk their life!',0),
(28785,0,0,0,0,0,0,0,0, 'It''s true, we were ambushed. I don''t dare send any more soldiers out there and risk losing them too. I need a volunteer. Someone willing to risk their life!',0),
(28786,0,0,0,0,0,0,0,0, 'It''s true, we were ambushed. I don''t dare send any more soldiers out there and risk losing them too. I need a volunteer. Someone willing to risk their life!',0),
(28787,0,0,0,0,0,0,0,0, 'It''s true, we were ambushed. I don''t dare send any more soldiers out there and risk losing them too. I need a volunteer. Someone willing to risk their life!',0),
(28788,0,0,0,0,0,0,0,0, 'It''s true, we were ambushed. I don''t dare send any more soldiers out there and risk losing them too. I need a volunteer. Someone willing to risk their life!',0),
(28789,0,0,0,0,0,0,0,0, 'It''s true, we were ambushed. I don''t dare send any more soldiers out there and risk losing them too. I need a volunteer. Someone willing to risk their life!',0),
(29080,0,0,0,0,0,0,0,0, 'It''s true, we were ambushed. I don''t dare send any more soldiers out there and risk losing them too. I need a volunteer. Someone willing to risk their life!',0),
(28806,273,4,0,0,0,0,0,0, 'I think you now understand the power of the Light. The Light giveth hope, $g brother:sister; and the Light taketh from the darkness! BLESSED BE THE LIGHT!',0),
(28808,273,4,0,0,0,0,0,0, 'I think you now understand the power of the Light. The Light giveth hope, $g brother:sister; and the Light taketh from the darkness! BLESSED BE THE LIGHT!',0),
(28809,273,4,0,0,0,0,0,0, 'I think you now understand the power of the Light. The Light giveth hope, $g brother:sister; and the Light taketh from the darkness! BLESSED BE THE LIGHT!',0),
(28810,273,4,0,0,0,0,0,0, 'I think you now understand the power of the Light. The Light giveth hope, $g brother:sister; and the Light taketh from the darkness! BLESSED BE THE LIGHT!',0),
(28811,273,4,0,0,0,0,0,0, 'I think you now understand the power of the Light. The Light giveth hope, $g brother:sister; and the Light taketh from the darkness! BLESSED BE THE LIGHT!',0),
(28812,273,4,0,0,0,0,0,0, 'I think you now understand the power of the Light. The Light giveth hope, $g brother:sister; and the Light taketh from the darkness! BLESSED BE THE LIGHT!',0),
(28813,273,4,0,0,0,0,0,0, 'I think you now understand the power of the Light. The Light giveth hope, $g brother:sister; and the Light taketh from the darkness! BLESSED BE THE LIGHT!',0),
(29082,273,4,0,0,0,0,0,0, 'I think you now understand the power of the Light. The Light giveth hope, $g brother:sister; and the Light taketh from the darkness! BLESSED BE THE LIGHT!',0),
(28791,0,0,0,0,0,0,0,0, 'That will teach those monsters! They''ll think twice before taking another mercenary job for orcs.',0),
(28792,0,0,0,0,0,0,0,0, 'That will teach those monsters! They''ll think twice before taking another mercenary job for orcs.',0),
(28793,0,0,0,0,0,0,0,0, 'That will teach those monsters! They''ll think twice before taking another mercenary job for orcs.',0),
(28794,0,0,0,0,0,0,0,0, 'That will teach those monsters! They''ll think twice before taking another mercenary job for orcs.',0),
(28795,0,0,0,0,0,0,0,0, 'That will teach those monsters! They''ll think twice before taking another mercenary job for orcs.',0),
(28796,0,0,0,0,0,0,0,0, 'That will teach those monsters! They''ll think twice before taking another mercenary job for orcs.',0),
(28797,0,0,0,0,0,0,0,0, 'That will teach those monsters! They''ll think twice before taking another mercenary job for orcs.',0),
(29081,0,0,0,0,0,0,0,0, 'That will teach those monsters! They''ll think twice before taking another mercenary job for orcs.',0),
(28817,1,1,1,5,0,0,0,0, 'With your help we have managed to secure the northern and western sectors of Northshire. We still have a rather large contingency of Blackrock orcs to the east and they''ve begun burning down the forest!',0),
(28818,1,1,1,5,0,0,0,0, 'With your help we have managed to secure the northern and western sectors of Northshire. We still have a rather large contingency of Blackrock orcs to the east and they''ve begun burning down the forest!',0),
(28819,1,1,1,5,0,0,0,0, 'With your help we have managed to secure the northern and western sectors of Northshire. We still have a rather large contingency of Blackrock orcs to the east and they''ve begun burning down the forest!',0),
(28820,1,1,1,5,0,0,0,0, 'With your help we have managed to secure the northern and western sectors of Northshire. We still have a rather large contingency of Blackrock orcs to the east and they''ve begun burning down the forest!',0),
(28821,1,1,1,5,0,0,0,0, 'With your help we have managed to secure the northern and western sectors of Northshire. We still have a rather large contingency of Blackrock orcs to the east and they''ve begun burning down the forest!',0),
(28822,1,1,1,5,0,0,0,0, 'With your help we have managed to secure the northern and western sectors of Northshire. We still have a rather large contingency of Blackrock orcs to the east and they''ve begun burning down the forest!',0),
(28823,1,1,1,5,0,0,0,0, 'With your help we have managed to secure the northern and western sectors of Northshire. We still have a rather large contingency of Blackrock orcs to the east and they''ve begun burning down the forest!',0),
(29083,1,1,1,5,0,0,0,0, 'With your help we have managed to secure the northern and western sectors of Northshire. We still have a rather large contingency of Blackrock orcs to the east and they''ve begun burning down the forest!',0);
UPDATE `quest_template_addon` SET `AllowableClasses`=4,`NextQuestID`=28759 WHERE `ID`=28767; -- Hunter
UPDATE `quest_template_addon` SET `AllowableClasses`=128,`NextQuestID`=28769 WHERE `ID`=28757; -- Mage
UPDATE `quest_template_addon` SET `AllowableClasses`=2,`NextQuestID`=28770 WHERE `ID`=28762; -- Paladin
UPDATE `quest_template_addon` SET `AllowableClasses`=16,`NextQuestID`=28771 WHERE `ID`=28763; -- Priest
UPDATE `quest_template_addon` SET `AllowableClasses`=8,`NextQuestID`=28772 WHERE `ID`=28764; -- Rogue
UPDATE `quest_template_addon` SET `AllowableClasses`=256,`NextQuestID`=28773 WHERE `ID`=28765; -- Warlock
UPDATE `quest_template_addon` SET `AllowableClasses`=1,`NextQuestID`=28774 WHERE `ID`=28766; -- Warrior
UPDATE `quest_template_addon` SET `AllowableClasses`=32,`NextQuestID`=29079 WHERE `ID`=29078; -- Deathknight
UPDATE `quest_template_addon` SET `AllowableClasses`=4,`NextQuestID`=28780 WHERE `ID`=28759; -- Hunter
UPDATE `quest_template_addon` SET `AllowableClasses`=128,`NextQuestID`=28784 WHERE `ID`=28769; -- Mage
UPDATE `quest_template_addon` SET `AllowableClasses`=2,`NextQuestID`=28785 WHERE `ID`=28770; -- Paladin
UPDATE `quest_template_addon` SET `AllowableClasses`=16,`NextQuestID`=28786 WHERE `ID`=28771; -- Priest
UPDATE `quest_template_addon` SET `AllowableClasses`=8,`NextQuestID`=28787 WHERE `ID`=28772; -- Rogue
UPDATE `quest_template_addon` SET `AllowableClasses`=256,`NextQuestID`=28788 WHERE `ID`=28773; -- Warlock
UPDATE `quest_template_addon` SET `AllowableClasses`=1,`NextQuestID`=28789 WHERE `ID`=28774; -- Warrior
UPDATE `quest_template_addon` SET `AllowableClasses`=32,`NextQuestID`=29080 WHERE `ID`=29079; -- Deathknight
UPDATE `quest_template_addon` SET `AllowableClasses`=4,`NextQuestID`=28791 WHERE `ID`=28780; -- Hunter
UPDATE `quest_template_addon` SET `AllowableClasses`=128,`NextQuestID`=28792 WHERE `ID`=28784; -- Mage
UPDATE `quest_template_addon` SET `AllowableClasses`=2,`NextQuestID`=28793 WHERE `ID`=28785; -- Paladin
UPDATE `quest_template_addon` SET `AllowableClasses`=16,`NextQuestID`=28794 WHERE `ID`=28786; -- Priest
UPDATE `quest_template_addon` SET `AllowableClasses`=8,`NextQuestID`=28795 WHERE `ID`=28787; -- Rogue
UPDATE `quest_template_addon` SET `AllowableClasses`=256,`NextQuestID`=28796 WHERE `ID`=28788; -- Warlock
UPDATE `quest_template_addon` SET `AllowableClasses`=1,`NextQuestID`=28797 WHERE `ID`=28789; -- Warrior
UPDATE `quest_template_addon` SET `AllowableClasses`=32,`NextQuestID`=29081 WHERE `ID`=29080; -- Deathknight
UPDATE `quest_template_addon` SET `AllowableClasses`=4,`NextQuestID`=28817 WHERE `ID`=28791; -- Hunter
UPDATE `quest_template_addon` SET `AllowableClasses`=128,`NextQuestID`=28818 WHERE `ID`=28792; -- Mage
UPDATE `quest_template_addon` SET `AllowableClasses`=2,`NextQuestID`=28819 WHERE `ID`=28793; -- Paladin
UPDATE `quest_template_addon` SET `AllowableClasses`=16,`NextQuestID`=28820 WHERE `ID`=28794; -- Priest
UPDATE `quest_template_addon` SET `AllowableClasses`=8,`NextQuestID`=28821 WHERE `ID`=28795; -- Rogue
UPDATE `quest_template_addon` SET `AllowableClasses`=256,`NextQuestID`=28822 WHERE `ID`=28796; -- Warlock
UPDATE `quest_template_addon` SET `AllowableClasses`=4,`NextQuestID`=28823 WHERE `ID`=28797; -- Warrior
UPDATE `quest_template_addon` SET `AllowableClasses`=32,`NextQuestID`=29083 WHERE `ID`=29081; -- Deathknight
UPDATE `quest_template_addon` SET `AllowableClasses`=4,`PrevQuestID`=28780 WHERE `ID`=28806; -- Hunter
UPDATE `quest_template_addon` SET `AllowableClasses`=128,`PrevQuestID`=28784 WHERE `ID`=28808; -- Mage
UPDATE `quest_template_addon` SET `AllowableClasses`=2,`PrevQuestID`=28785 WHERE `ID`=28809; -- Paladin
UPDATE `quest_template_addon` SET `AllowableClasses`=16,`PrevQuestID`=28786 WHERE `ID`=28810; -- Priest
UPDATE `quest_template_addon` SET `AllowableClasses`=8,`PrevQuestID`=28787 WHERE `ID`=28811; -- Rogue
UPDATE `quest_template_addon` SET `AllowableClasses`=256,`PrevQuestID`=28788 WHERE `ID`=28812; -- Warlock
UPDATE `quest_template_addon` SET `AllowableClasses`=4,`PrevQuestID`=28789 WHERE `ID`=28813; -- Warrior
UPDATE `quest_template_addon` SET `AllowableClasses`=32,`PrevQuestID`=29080 WHERE `ID`=29082; -- Deathknight
UPDATE `quest_template_addon` SET `AllowableClasses`=4,`NextQuestID`=26389 WHERE `ID`=28817; -- Hunter
UPDATE `quest_template_addon` SET `AllowableClasses`=128,`NextQuestID`=26389 WHERE `ID`=28818; -- Mage
UPDATE `quest_template_addon` SET `AllowableClasses`=2,`NextQuestID`=26389 WHERE `ID`=28819; -- Paladin
UPDATE `quest_template_addon` SET `AllowableClasses`=16,`NextQuestID`=26389 WHERE `ID`=28820; -- Priest
UPDATE `quest_template_addon` SET `AllowableClasses`=8,`NextQuestID`=26389 WHERE `ID`=28821; -- Rogue
UPDATE `quest_template_addon` SET `AllowableClasses`=256,`NextQuestID`=26389 WHERE `ID`=28822; -- Warlock
UPDATE `quest_template_addon` SET `AllowableClasses`=4,`NextQuestID`=26389 WHERE `ID`=28823; -- Warrior
UPDATE `quest_template_addon` SET `AllowableClasses`=32,`NextQuestID`=26389 WHERE `ID`=29083; -- Deathknight
UPDATE `creature_queststarter` SET `id`=197 WHERE `quest` IN (28780,28784,28785,28786,28787,28788,28789,29080);
@@ -0,0 +1,2 @@
--
UPDATE `quest_template_addon` SET `AllowableClasses`=1 WHERE `ID`=28797; -- Warrior
@@ -0,0 +1,264 @@
/*
* Thorim
*/
DELETE FROM `creature_text` WHERE `CreatureID` IN (32865,32872,32873,33196);
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextID`, `comment`) VALUES
-- Thorim
(32865, 0,0,'Interlopers! You mortals who dare to interfere with my sport will pay... Wait--you...',14,0,100,0,0,15733,33145,'Thorim SAY_AGGRO_1'),
(32865, 1,0,'I remember you... In the mountains... But you... what is this? Where am--',14,0,100,0,0,15734,33270,'Thorim SAY_AGGRO_2'),
(32865, 2,0,'Do not hold back! Destroy them!',14,0,100,0,0,15736,34241,'Thorim SAY_SPECIAL'),
(32865, 3,0,'Impertinent whelps, you dare challenge me atop my pedestal? I will crush you myself!',14,0,100,0,0,15738,33148,'Thorim SAY_JUMPDOWN'),
(32865, 4,0,'Can''t you at least put up a fight!?',14,0,100,0,0,15739,34239,'Thorim SAY_SLAY_1'),
(32865, 4,1,'Pathetic.',14,0,100,0,0,15740,35768,'Thorim SAY_SLAY_2'),
(32865, 5,0,'My patience has reached its limit!',14,0,100,0,0,15741,33365,'Thorim SAY_BERSERK'),
(32865, 6,0,'Failures! Weaklings!',14,0,100,0,0,15742,33274,'Thorim SAY_WIPE'),
(32865, 7,0,'Stay your arms! I yield!',14,0,100,0,0,15743,33948,'Thorim SAY_DEATH'),
(32865, 8,0,'I feel as though I am awakening from a nightmare, but the shadows in this place yet linger.',14,0,100,0,0,15744,33949,'Thorim SAY_END_NORMAL_1'),
(32865, 9,0,'Sif... was Sif here? Impossible--she died by my brother''s hand. A dark nightmare indeed....',14,0,100,0,0,15745,33950,'Thorim SAY_END_NORMAL_2'),
(32865,10,0,'I need time to reflect.... I will aid your cause if you should require it. I owe you at least that much. Farewell.',14,0,100,0,0,15746,33951,'Thorim SAY_END_NORMAL_3'),
(32865,11,0,'You! Fiend! You are not my beloved! Be gone!',14,0,100,0,0,15747,33952,'Thorim SAY_END_HARD_1'),
(32865,12,0,'Behold the hand behind all the evil that has befallen Ulduar, left my kingdom in ruins, corrupted my brother, and slain my wife.',14,0,100,0,0,15748,33953,'Thorim SAY_END_HARD_2'),
(32865,13,0,'And now it falls to you, champions, to avenge us all. The task before you is great, but I will lend you my aid as I am able. You must prevail.',14,0,100,0,0,15749,33954,'Thorim SAY_END_HARD_3'),
-- Runic Colossus
(32872, 0,0,'%s surrounds itself with a crackling Runic Barrier!',41,0,100,0,0,0,33267,'Runic Colossus'),
-- Ancient Rune Giant
(32873, 0,0,'%s fortifies nearby allies with runic might!',41,0,100,0,0,0,33523,'Ancient Rune Giant'),
-- Sif
(33196, 0,0,'Thorim, my lord! Why else would these invaders have come into your sanctum but to slay you? They must be stopped!',14,0,100,0,0,15668,33325,'Sif - Start'),
(33196, 1,0,'These pathetic mortals are harmless, beneath my station. Dispose of them!',14,0,100,0,0,15669,33368,'Sif - Despawn'),
(33196, 2,0,'Impossible! Lord Thorim, I will bring your foes a frigid death!',14,0,100,0,0,15670,33369,'Sif - Event');
-- Lever SAI
SET @ENTRY := 194264;
UPDATE `gameobject_template` SET `AIName`='SmartGameObjectAI' WHERE `entry`=@ENTRY;
UPDATE `gameobject_template_addon` SET `flags`=32 WHERE `entry`=@ENTRY;
DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=1;
INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
(@ENTRY,1,0,0,70,0,100,0,2,0,0,0,9,0,0,0,0,0,0,14,34155,0,0,0,0,0,0,'Lever - On Gameobject State Changed - Activate Gameobject');
-- Thorim Trap Bunny SAI
SET @ENTRY := 33054;
UPDATE `creature_template` SET `AIName`='SmartAI', `flags_extra`=2 WHERE `entry`=@ENTRY;
DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
(@ENTRY,0,0,0,10,0,100,0,0,12,17000,17000,11,62241,0,0,0,0,0,1,0,0,0,0,0,0,0,'Thorim Trap Bunny - Within 0-12 Range Out of Combat LoS - Cast Paralytic Field');
SET @ENTRY := 33725;
UPDATE `creature_template` SET `AIName`='SmartAI', `flags_extra`=2 WHERE `entry`=@ENTRY;
DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
(@ENTRY,0,0,0,10,0,100,0,0,12,17000,17000,11,63540,0,0,0,0,0,1,0,0,0,0,0,0,0,'Thorim Trap Bunny - Within 0-12 Range Out of Combat LoS - Cast Paralytic Field');
DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_thorim_blizzard_effect','spell_thorim_frostbolt_volley','spell_thorim_charge_orb','spell_thorim_runic_smash','spell_thorim_stormhammer','spell_thorim_lightning_charge','spell_thorim_stormhammer_sif','spell_thorim_stormhammer_boomerang','spell_thorim_activate_lightning_orb_periodic','spell_iron_ring_guard_impale','spell_thorim_arena_leap');
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
(62576,'spell_thorim_blizzard_effect'),
(62602,'spell_thorim_blizzard_effect'),
(62580,'spell_thorim_frostbolt_volley'),
(62604,'spell_thorim_frostbolt_volley'),
(62016,'spell_thorim_charge_orb'),
(62057,'spell_thorim_runic_smash'),
(62058,'spell_thorim_runic_smash'),
(62042,'spell_thorim_stormhammer'),
(62466,'spell_thorim_lightning_charge'),
(64767,'spell_thorim_stormhammer_sif'),
(64909,'spell_thorim_stormhammer_boomerang'),
(62184,'spell_thorim_activate_lightning_orb_periodic'),
(62331,'spell_iron_ring_guard_impale'),
(62418,'spell_iron_ring_guard_impale'),
(61934,'spell_thorim_arena_leap');
DELETE FROM `spell_linked_spell` WHERE `spell_trigger`=62042;
DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = -62320;
INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES
(-62320, -62398, 0, 'Aura of Celerity - Remove Visual');
-- Add dummy effect to kill credit so it actually selects targets
UPDATE `spell_dbc` SET `SchoolMask`=0 WHERE `Id`=64980;
UPDATE `spelleffect_dbc` SET `EffectImplicitTargetA`=18, `EffectImplicitTargetB`=16, `EffectRadiusIndex`=28, `Effect`=3 WHERE `EffectSpellId`=64980;
-- Correct attributes (SPELL_ATTR0_HIDE_IN_COMBAT_LOG, SPELL_ATTR2_CAN_TARGET_DEAD, SPELL_ATTR2_CAN_TARGET_NOT_IN_LOS)
UPDATE `spell_dbc` SET `Attributes`=`Attributes`|256, `AttributesEx2`=`AttributesEx2`|1|4 WHERE `Id` IN (64980,64985);
DELETE FROM `spelldifficulty_dbc` WHERE `id` IN (62131,62315,62316,62333,62334,62335,62327,62328,62321,62331,62332,62613,62583,62577,62597,62580);
INSERT INTO `spelldifficulty_dbc` (`id`, `spellid0`, `spellid1`) VALUES
(62131,62131,64390), -- Chain Lightning
(62315,62315,62415), -- Acid Breath
(62316,62316,62417), -- Sweep
(62333,62333,62441), -- Renew
(62334,62334,62442), -- Greater Heal
(62335,62335,62443), -- Holy Smite
(62327,62327,62445), -- Runic Lightning
(62328,62328,62446), -- Runic Mending
(62321,62321,62529), -- Runic Shield
(62331,62331,62418), -- Impale
(62332,62332,62420), -- Shield Smash
(62613,62613,62614), -- Charge
(62583,62583,62601), -- Frostbolt
(62577,62577,62603), -- Blizzard
(62597,62597,62605), -- Frost Nova
(62580,62580,62604); -- Frostbolt Volley
UPDATE `creature_template` SET `ScriptName`='boss_thorim' WHERE `entry`=32865;
UPDATE `creature_template` SET `ScriptName`='npc_sif' WHERE `entry`=33196;
UPDATE `creature_template` SET `ScriptName`='npc_thorim_pre_phase' WHERE `entry` IN (32885,32883,32908,32907,32882,32886);
UPDATE `creature_template` SET `ScriptName`='npc_thorim_arena_phase' WHERE `entry` IN (32876,32904,32878,32877,32874,32875,33110);
UPDATE `creature_template` SET `ScriptName`='npc_runic_colossus' WHERE `entry`=32872;
UPDATE `creature_template` SET `ScriptName`='npc_ancient_rune_giant' WHERE `entry`=32873;
UPDATE `creature_template` SET `flags_extra`=`flags_extra`|0x40000000 WHERE `entry` IN (32872, 32873, 33148, 33149);
UPDATE `creature_template` SET `difficulty_entry_1`=33150 WHERE `entry`=32908; -- Swapped Difficulty entry npcs
UPDATE `creature_template` SET `difficulty_entry_1`=33151 WHERE `entry`=32907; -- Caused swapped displayIDs in 25n
UPDATE `creature_template` SET `InhabitType`=4, `flags_extra`=128, `ScriptName`='' WHERE `entry` IN (33140,33141);
UPDATE `creature_template` SET `InhabitType`=4, `flags_extra`=128 WHERE `entry` IN (33378,32879);
UPDATE `creature_template` SET `InhabitType`=4 WHERE `entry` IN (32892);
UPDATE `creature_template` SET `faction`=1692 WHERE `entry` IN (32885,32883,33152,33153,32908,33150,32907,33151);
UPDATE `creature_template` SET `faction`=1693 WHERE `entry` IN (32882,33154);
UPDATE `creature_template` SET `speed_walk`=2.5/2.5, `speed_run`=14.0/7.0, `BaseAttackTime`=1500, `RangeAttackTime`=1500, `flags_extra`=`flags_extra`|0x00000200 WHERE `entry` IN (32865,33147);
SET @THORIM_BLIZZARD_BUNNY := 136515;
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry` IN (62577,62603,62016,62976,63238,64098,62466,62565,62942,64767,62560,61964,61934);
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
(13, 1, 62577, 0, 0, 31, 0, 3, 32892, @THORIM_BLIZZARD_BUNNY, 0, 0, 0, '', 'Spell Blizzard (effect 0) will hit the potential target of the spell if target is unit Thorim Event Bunny guid 136515.'),
(13, 1, 62603, 0, 0, 31, 0, 3, 32892, @THORIM_BLIZZARD_BUNNY, 0, 0, 0, '', 'Spell Blizzard (effect 0) will hit the potential target of the spell if target is unit Thorim Event Bunny guid 136515.'),
(13, 1, 62016, 0, 0, 31, 0, 3, 33378, 0, 0, 0, 0, '', 'Spell Charge Orb (effect 0) will hit the potential target of the spell if target is unit Thunder Orb.'),
(13, 1, 62976, 0, 0, 31, 0, 3, 33378, 0, 0, 0, 0, '', 'Spell Lightning Pillar (effect 0) will hit the potential target of the spell if target is unit Thunder Orb.'),
(13, 1, 62976, 0, 0, 33, 0, 1, 0, 0, 1, 0, 0, '', 'Spell Lightning Pillar (effect 0) will hit the potential target of the spell if target is not the same as condition target.'),
(13, 1, 63238, 0, 0, 31, 0, 3, 33378, 0, 0, 0, 0, '', 'Spell Lightning Pillar (effect 0) will hit the potential target of the spell if target is unit Thunder Orb.'),
(13, 1, 63238, 0, 0, 33, 0, 1, 0, 0, 1, 0, 0, '', 'Spell Lightning Pillar (effect 0) will hit the potential target of the spell if target is not the same as condition target.'),
(13, 1, 64098, 0, 0, 31, 0, 3, 32865, 0, 0, 0, 0, '', 'Spell Lightning Bolt (effect 0) will hit the potential target of the spell if target is unit Thorim.'),
(13, 4, 62466, 0, 0, 31, 0, 3, 32780, 0, 0, 0, 0, '', 'Spell Lightning Charge (effect 2) will hit the potential target of the spell if target is unit Invisible Stalker (All Phases).'),
(13, 3, 62565, 0, 0, 31, 0, 3, 32865, 0, 0, 0, 0, '', 'Spell Touch of Dominion (effects 0 & 1) will hit the potential target of the spell if target is unit Thorim.'),
(13, 7, 62942, 0, 0, 31, 0, 3, 32874, 0, 0, 0, 0, '', 'Spell Runic Fortification (effect 0 & 1 & 2) will hit the potential target of the spell if target is unit Iron Ring Guard.'),
(13, 7, 62942, 0, 1, 31, 0, 3, 32875, 0, 0, 0, 0, '', 'Spell Runic Fortification (effect 0 & 1 & 2) will hit the potential target of the spell if target is unit Iron Honor Guard.'),
(13, 7, 62942, 0, 2, 31, 0, 3, 33110, 0, 0, 0, 0, '', 'Spell Runic Fortification (effect 0 & 1 & 2) will hit the potential target of the spell if target is unit Dark Rune Acolyte.'),
(13, 1, 64767, 0, 0, 31, 0, 3, 33196, 0, 0, 0, 0, '', 'Spell Stormhammer (effect 0) will hit the potential target of the spell if target is unit Sif.'),
(13, 7, 62560, 0, 0, 31, 0, 3, 32876, 0, 0, 0, 0, '', 'Spell Berserk (effect 0 & 1 & 2) will hit the potential target of the spell if target is unit Dark Rune Champion.'),
(13, 7, 62560, 0, 1, 31, 0, 3, 32877, 0, 0, 0, 0, '', 'Spell Berserk (effect 0 & 1 & 2) will hit the potential target of the spell if target is unit Dark Rune Warbringer.'),
(13, 7, 62560, 0, 2, 31, 0, 3, 32878, 0, 0, 0, 0, '', 'Spell Berserk (effect 0 & 1 & 2) will hit the potential target of the spell if target is unit Dark Rune Evoker.'),
(13, 7, 62560, 0, 3, 31, 0, 3, 32904, 0, 0, 0, 0, '', 'Spell Berserk (effect 0 & 1 & 2) will hit the potential target of the spell if target is unit Dark Rune Commoner.'),
(13, 1, 61964, 0, 0, 31, 0, 3, 32882, 0, 0, 0, 0, '', 'Spell Circle of Healing (effect 0) will hit the potential target of the spell if target is unit Jormungar Behemoth.'),
(13, 1, 61964, 0, 1, 31, 0, 3, 32883, 0, 0, 0, 0, '', 'Spell Circle of Healing (effect 0) will hit the potential target of the spell if target is unit Captured Mercenary Soldier.'),
(13, 1, 61964, 0, 2, 31, 0, 3, 32885, 0, 0, 0, 0, '', 'Spell Circle of Healing (effect 0) will hit the potential target of the spell if target is unit Captured Mercenary Soldier.'),
(13, 1, 61964, 0, 3, 31, 0, 3, 32886, 0, 0, 0, 0, '', 'Spell Circle of Healing (effect 0) will hit the potential target of the spell if target is unit Dark Rune Acolyte.'),
(13, 1, 61964, 0, 4, 31, 0, 3, 32907, 0, 0, 0, 0, '', 'Spell Circle of Healing (effect 0) will hit the potential target of the spell if target is unit Captured Mercenary Captain.'),
(13, 1, 61964, 0, 5, 31, 0, 3, 32908, 0, 0, 0, 0, '', 'Spell Circle of Healing (effect 0) will hit the potential target of the spell if target is unit Captured Mercenary Captain.'),
(13, 1, 61934, 0, 0, 31, 0, 3, 32892, 0, 0, 0, 0, 'condition_thorim_arena_leap', 'Spell Leap (effect 0) will hit the potential target of the spell if target is unit Thorim Event Bunny.'),
(13, 1, 61934, 0, 0, 31, 0, 3, 32892, @THORIM_BLIZZARD_BUNNY, 1, 0, 0, '', 'Spell Leap (effect 0) will hit the potential target of the spell if target is not unit Thorim Event Bunny guid 136515.');
DELETE FROM `disables` WHERE `sourceType`=4 AND `entry` IN (10289,10314,10304,10313,10440,10457,10800,10801);
INSERT INTO `disables` (`sourceType`,`entry`,`flags`,`params_0`,`params_1`,`comment`) VALUES
(4,10800,0,0,0,'Siffed (10 player) - Duplicate'),
(4,10801,0,0,0,'Siffed (25 player) - Duplicate');
DELETE FROM `disables` WHERE `sourceType`=0 AND `entry` IN (62042,64767,45537);
INSERT INTO `disables` (`sourceType`, `entry`, `flags`, `params_0`, `params_1`, `comment`) VALUES
(0, 62042, 64, '', '', 'Stormhammer - Ignore LOS'),
(0, 64767, 64, '', '', 'Stormhammer - Ignore LOS'),
(0, 45537, 64, '', '', 'Lightning Beam Channel - Ignore LOS');
DELETE FROM `achievement_criteria_data` WHERE `criteria_id` IN (10289,10314,10305,10309,10440,10457,10287,10288,10311,10312);
INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`) VALUES
(10289,12,0,0,''), -- Siffed (10 player)
(10314,12,1,0,''), -- Siffed (25 player)
(10305,11,0,0,'achievement_dont_stand_in_the_lightning'), -- Don't Stand in the Lightning (10 player)
(10305,12,0,0,''), -- Don't Stand in the Lightning (10 player)
(10309,11,0,0,'achievement_dont_stand_in_the_lightning'), -- Don't Stand in the Lightning (25 player)
(10309,12,1,0,''), -- Don't Stand in the Lightning (25 player)
(10440,11,0,0,'achievement_lose_your_illusion'), -- Lose Your Illusion (10 player)
(10440,12,0,0,''), -- Lose Your Illusion (10 player)
(10457,11,0,0,'achievement_lose_your_illusion'), -- Lose Your Illusion (25 player)
(10457,12,1,0,''), -- Lose Your Illusion (25 player)
(10287,11,0,0,'achievement_i_ll_take_you_all_on'), -- I'll Take You All On (10 player) - Participate in slaying Runic Colossus
(10287,12,0,0,''),
(10288,11,0,0,'achievement_i_ll_take_you_all_on'), -- I'll Take You All On (10 player) - Participate in slaying Ancient Rune Giant
(10288,12,0,0,''),
(10311,11,0,0,'achievement_i_ll_take_you_all_on'), -- I'll Take You All On (25 player) - Participate in slaying Runic Colossus
(10311,12,1,0,''),
(10312,11,0,0,'achievement_i_ll_take_you_all_on'), -- I'll Take You All On (25 player) - Participate in slaying Ancient Rune Giant
(10312,12,1,0,'');
DELETE FROM `creature` WHERE `id` IN (32882,32908,32907,32885,32883,32886); -- PreAdds
DELETE FROM `creature` WHERE `id` IN (32874,32875,33110); -- Colossus, Giant Adds
-- Fix Thorim Controller multi spawns
SET @CGUID:=136446;
DELETE FROM `creature` WHERE `id`=32879;
INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `MovementType`) VALUES
(@CGUID, 32879, 603, 3, 1, 2134.774, -262.3073, 428.6936, 1.343904, 7200, 0, 0); -- 32879 (Area: 0) (Auras: 62184 - 62184)
UPDATE `gameobject_template` SET `size`=3 WHERE `entry`=194315;
UPDATE `gameobject_template_addon` SET `faction`=94, `flags`=16 WHERE `entry` IN (194313,194314,194315);
SET @OGUID := 3926; -- 4 free guids
DELETE FROM `gameobject` WHERE `id` IN (194312,194313,194314,194315);
INSERT INTO `gameobject` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) values
(@OGUID+0,194312,603,1,1,2134.948,-286.436,419.5051,1.588249,0,0,0.7132502,0.7009096,-2592000,255,1,0),
(@OGUID+1,194313,603,1,1,2134.948,-286.436,419.5051,1.588249,0,0,0.7132502,0.7009096,-2592000,255,1,0),
(@OGUID+2,194314,603,2,1,2134.948,-286.436,419.5051,1.588249,0,0,0.7132502,0.7009096,-2592000,255,1,0),
(@OGUID+3,194315,603,2,1,2134.948,-286.436,419.5051,1.588249,0,0,0.7132502,0.7009096,-2592000,255,1,0);
UPDATE `gameobject_loot_template` SET `LootMode`=1 WHERE `Entry`=27074;
DELETE FROM `gameobject_loot_template` WHERE `Entry` IN (26955,26956);
INSERT INTO `gameobject_loot_template` (`Entry`,`Item`,`Reference`,`Chance`,`QuestRequired`,`LootMode`,`GroupId`,`MinCount`,`MaxCount`,`Comment`) VALUES
(26955,1,34372,100,0,1,0,1,1,'Thorim25 HM - normal mode loot'),
(26955,2,12033,100,0,1,0,1,2,'Thorim25 HM - T8.5 tokens'),
(26955,3,34154,10,0,1,0,1,1,'Thorim25 HM - Random Ulduar craft recipe'),
(26955,45038,0,18,0,1,0,1,1,'Thorim25 HM - Val''anyr fragment'),
(26955,45087,0,10,0,1,0,1,1,'Thorim25 HM - Runed Orb'),
(26955,45470,0,0,0,1,1,1,1,'Thorim25 HM - Wisdom''s Hold'),
(26955,45471,0,0,0,1,1,1,1,'Thorim25 HM - Fate''s Clutch'),
(26955,45472,0,0,0,1,1,1,1,'Thorim25 HM - Warhelm of the Champion'),
(26955,45473,0,0,0,1,1,1,1,'Thorim25 HM - Embrace of the Gladiator'),
(26955,45474,0,0,0,1,1,1,1,'Thorim25 HM - Pauldrons of the Combatant'),
(26955,45570,0,0,0,1,1,1,1,'Thorim25 HM - Skyforge Crossbow'),
(26955,45817,0,100,1,1,0,1,1,'Thorim25 HM - Thorim''s Sigil'),
(26955,47241,0,100,0,1,0,1,1,'Thorim25 HM - Emblem of Triumph'),
(26956,1,34372,100,0,1,0,1,1,'Thorim25 - normal mode loot'),
(26956,2,12033,100,0,1,0,1,2,'Thorim25 - T8.5 tokens'),
(26956,3,34154,10,0,1,0,1,1,'Thorim25 - Random Ulduar craft recipe'),
(26956,45038,0,8,0,1,0,1,1,'Thorim25 - Val''anyr fragment'),
(26956,45087,0,10,0,1,0,1,1,'Thorim25 - Runed Orb'),
(26956,47241,0,100,0,1,0,1,1,'Thorim25 - Emblem of Triumph');
-- Pathing for Thorim Event Bunny Entry: 32892 'TDB FORMAT'
SET @PATH := @THORIM_BLIZZARD_BUNNY * 10;
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=2148.425,`position_y`=-276.7478,`position_z`=419.5923 WHERE `guid`=@THORIM_BLIZZARD_BUNNY;
DELETE FROM `creature_addon` WHERE `guid`=@THORIM_BLIZZARD_BUNNY;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@THORIM_BLIZZARD_BUNNY,@PATH,0,0,1,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,2148.425,-276.7478,419.5923,0,0,0,0,100,0),
(@PATH,2,2145.229,-278.5732,419.6016,0,0,0,0,100,0),
(@PATH,3,2142.105,-280.7194,419.5932,0,0,0,0,100,0),
(@PATH,4,2138.419,-281.2838,419.5999,0,0,0,0,100,0),
(@PATH,5,2134.843,-281.9885,419.5996,0,0,0,0,100,0),
(@PATH,6,2131.128,-281.278,419.5985,0,0,0,0,100,0),
(@PATH,7,2127.415,-280.8166,419.5875,0,0,0,0,100,0),
(@PATH,8,2124.459,-278.4777,419.6088,0,0,0,0,100,0),
(@PATH,9,2121.098,-276.7148,419.5924,0,0,0,0,100,0),
(@PATH,10,2119.281,-273.4217,419.6069,0,0,0,0,100,0),
(@PATH,11,2116.933,-270.4605,419.5851,0,0,0,0,100,0),
(@PATH,12,2116.359,-266.7142,419.6042,0,0,0,0,100,0),
(@PATH,13,2115.436,-263.0562,419.5847,0,0,0,0,100,0),
(@PATH,14,2116.543,-259.411,419.6082,0,0,0,0,100,0),
(@PATH,15,2116.943,-255.605,419.5851,0,0,0,0,100,0),
(@PATH,16,2119.377,-252.7493,419.6096,0,0,0,0,100,0),
(@PATH,17,2121.183,-249.3546,419.5858,0,0,0,0,100,0),
(@PATH,18,2124.49,-247.5925,419.6089,0,0,0,0,100,0),
(@PATH,19,2127.329,-245.1714,419.5925,0,0,0,0,100,0),
(@PATH,20,2131.097,-244.8609,419.6089,0,0,0,0,100,0),
(@PATH,21,2134.792,-243.7036,419.585,0,0,0,0,100,0),
(@PATH,22,2138.466,-244.3162,419.5979,0,0,0,0,100,0),
(@PATH,23,2142.386,-244.7266,419.5746,0,0,0,0,100,0),
(@PATH,24,2145.455,-247.1502,419.5968,0,0,0,0,100,0),
(@PATH,25,2148.564,-249.0781,419.5791,0,0,0,0,100,0),
(@PATH,26,2150.63,-252.4069,419.598,0,0,0,0,100,0),
(@PATH,27,2153.104,-255.5907,419.5758,0,0,0,0,100,0),
(@PATH,28,2153.286,-259.4698,419.6053,0,0,0,0,100,0),
(@PATH,29,2154.193,-263.0425,419.6039,0,0,0,0,100,0),
(@PATH,30,2153.279,-266.768,419.6026,0,0,0,0,100,0),
(@PATH,31,2152.758,-270.5462,419.5822,0,0,0,0,100,0),
(@PATH,32,2150.38,-273.4614,419.605,0,0,0,0,100,0);
@@ -0,0 +1,2 @@
--
DELETE FROM `creature_addon` WHERE `guid` IN (136274,136490,136555);
@@ -0,0 +1,25 @@
--
DELETE FROM `creature` WHERE `guid` IN (79380,79383,79609,79614,79626,79631,79636,79650,79876,79895,79899,79921,80289,80295,80299,80300,80303,80311,80312,80315,80316,80323);
INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `curhealth`, `curmana`, `MovementType`) VALUES
(79380, 28603, 571, 1, 1, 0, 0, 6022.67, -2049.14, 238.189, 1.46482, 600, 10, 0, 0, 1),
(79383, 28603, 571, 1, 1, 0, 0, 6042.88, -2119.83, 239.522, 5.55282, 600, 10, 0, 0, 1),
(79609, 28603, 571, 1, 1, 0, 0, 6101.08, -2157.18, 239.578, 5.52926, 600, 10, 0, 0, 1),
(79614, 28603, 571, 1, 1, 0, 0, 6176.72, -2208.48, 241.65, 0.110007, 600, 10, 0, 0, 1),
(79626, 28603, 571, 1, 1, 0, 0, 6227.74, -2193.69, 236.211, 0.663713, 600, 10, 0, 0, 1),
(79631, 28603, 571, 1, 1, 0, 0, 6270.34, -2053.92, 238.548, 1.23705, 600, 10, 0, 0, 1),
(79636, 28603, 571, 1, 1, 0, 0, 6069.51, -1913.87, 236.212, 2.78429, 600, 10, 0, 0, 1),
(79650, 28603, 571, 1, 1, 0, 0, 6017.94, -1903.71, 239.384, 3.56183, 600, 10, 0, 0, 1),
(79876, 28603, 571, 1, 1, 0, 0, 5981.49, -1963.15, 237.669, 4.15088, 600, 10, 0, 0, 1),
(79895, 28603, 571, 1, 1, 0, 0, 6017.39, -2106.46, 243.382, 5.40752, 600, 10, 0, 0, 1),
(79899, 28603, 571, 1, 1, 0, 0, 5275.12, -1678.04, 236.349, 1.1703, 600, 10, 0, 0, 1),
(79921, 28603, 571, 1, 1, 0, 0, 5224.69, -1751.98, 235.717, 3.17306, 600, 10, 0, 0, 1),
(80289, 28603, 571, 1, 1, 0, 0, 5154.48, -1745.88, 238.291, 3.26731, 600, 10, 0, 0, 1),
(80295, 28603, 571, 1, 1, 0, 0, 5082.87, -1725.64, 235.624, 3.55791, 600, 10, 0, 0, 1),
(80299, 28603, 571, 1, 1, 0, 0, 5034.49, -1655.17, 240.16, 1.8693, 600, 10, 0, 0, 1),
(80300, 28603, 571, 1, 1, 0, 0, 5069.11, -1540.09, 240.561, 6.1183, 600, 10, 0, 0, 1),
(80303, 28603, 571, 1, 1, 0, 0, 5099.29, -1559.64, 238.941, 0.624444, 600, 10, 0, 0, 1),
(80311, 28603, 571, 1, 1, 0, 0, 6183.62, -2102.73, 235.653, 3.426750, 600, 10, 0, 0, 1),
(80312, 28603, 571, 1, 1, 0, 0, 6113.59, -2105.41, 234.909, 0.441447, 600, 10, 0, 0, 1),
(80315, 28603, 571, 1, 1, 0, 0, 6091.98, -2019.44, 235.639, 1.670596, 600, 10, 0, 0, 1),
(80316, 28603, 571, 1, 1, 0, 0, 6199.66, -1957.45, 234.049, 1.207211, 600, 10, 0, 0, 1),
(80323, 28603, 571, 1, 1, 0, 0, 6242.41, -2003.27, 234.282, 4.150887, 600, 10, 0, 0, 1);
@@ -0,0 +1,2 @@
--
UPDATE `quest_template_addon` SET `AllowableClasses`=1 WHERE `ID` IN (28823,29082); -- Warrior
@@ -0,0 +1,2 @@
-- Delete no longer used 4.3.4 achievements for thorim
DELETE FROM achievement_criteria_data WHERE `type`=12;
@@ -0,0 +1,66 @@
--
SET @NPC := 322219;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=1395.607,`position_y`=1967.916,`position_z`=18.21449 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,1395.607,1967.916,18.21449,0,0,0,0,100,0),
(@PATH,2,1394.16,1971.855,18.46909,0,0,0,0,100,0),
(@PATH,3,1384.627,1984.173,18.75889,0,0,0,0,100,0),
(@PATH,4,1378.888,1992.172,18.40506,0,0,0,0,100,0),
(@PATH,5,1368.135,1992.527,17.40968,0,0,0,0,100,0),
(@PATH,6,1376.495,1993.365,18.46769,0,0,0,0,100,0),
(@PATH,7,1381.746,1987.858,18.92303,0,0,0,0,100,0),
(@PATH,8,1391.86,1975.847,18.5155,0,0,0,0,100,0);
SET @NPC := 322231;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=1391.356,`position_y`=2009.19,`position_z`=15.90081 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,1391.356,2009.19,15.90081,0,0,0,0,100,0),
(@PATH,2,1396.165,2010.43,15.85461,0,0,0,0,100,0),
(@PATH,3,1411.213,2008.864,14.35008,0,0,0,0,100,0),
(@PATH,4,1422.343,2006.244,12.90728,0,0,0,0,100,0),
(@PATH,5,1434.081,2000.935,11.78559,0,0,0,0,100,0),
(@PATH,6,1448.412,1987.407,11.08783,0,0,0,0,100,0),
(@PATH,7,1444.67,1979.197,12.00837,0,0,0,0,100,0),
(@PATH,8,1448.225,1985.995,11.50098,0,0,0,0,100,0),
(@PATH,9,1440.929,1996.727,11.48743,0,0,0,0,100,0),
(@PATH,10,1425.209,2004.932,12.75235,0,0,0,0,100,0),
(@PATH,11,1412.675,2008.376,13.90751,0,0,0,0,100,0),
(@PATH,12,1403.565,2011.907,15.41258,0,0,0,0,100,0);
SET @NPC := 322230;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=1411.675,`position_y`=1959.445,`position_z`=15.54728 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,1411.675,1959.445,15.54728,0,0,0,0,100,0),
(@PATH,2,1408.175,1957.945,16.29728,0,0,0,0,100,0);
SET @NPC := 322213;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=1292.105,`position_y`=1954.99,`position_z`=19.55139 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,1292.105,1954.99,19.55139,0,0,0,0,100,0),
(@PATH,2,1312.855,1964.24,15.80139,0,0,0,0,100,0);
UPDATE `creature_template_addon` SET `bytes2`=1, `auras`='71764' WHERE `entry`=1766; -- 1766 (Rabid Worg)
UPDATE `creature_template_addon` SET `bytes2`=1 WHERE `entry`=1797; -- 1797 (Giant Rabid Bear)
UPDATE `creature_template_addon` SET `auras`='83859' WHERE `entry`=44923; -- 44923 (North Tide's Invisible Stalker (Large))
UPDATE `creature_template_addon` SET `auras`='' WHERE `entry`=1412; -- 1412 (Squirrel)
UPDATE `creature_template_addon` SET `bytes2`=1, `auras`='13886' WHERE `entry`=1780; -- 1780 (Skitterweb Striker)
UPDATE `creature_template_addon` SET `bytes2`=1 WHERE `entry`=1781; -- 1781 (Skitterweb Lurker)
UPDATE `creature_template` SET `maxlevel`=11, `speed_run`=1 WHERE `entry`=1797; -- Giant Rabid Bear
UPDATE `creature_template` SET `npcflag`=0 WHERE `entry`=44906; -- Skitterweb Matriarch
@@ -0,0 +1,33 @@
--
-- Pathing for Krethis the Shadowspinner Entry: 12433 'TDB FORMAT'
SET @NPC := 322085;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=1274.974,`position_y`=1897.126,`position_z`=21.38938 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,1274.974,1897.126,21.38938,0,0,0,0,100,0), -- 21:39:04
(@PATH,2,1278.909,1908.219,23.45893,0,0,0,0,100,0), -- 21:39:09
(@PATH,3,1284.339,1918.863,23.57857,0,0,0,0,100,0), -- 21:39:14
(@PATH,4,1280.469,1924.43,20.27084,0,0,0,0,100,0), -- 21:39:18
(@PATH,5,1271.227,1938.581,15.20391,0,0,0,0,100,0), -- 21:39:25
(@PATH,6,1265.389,1958.833,14.73023,0,0,0,0,100,0), -- 21:39:33
(@PATH,7,1255.614,1974.375,14.68589,0,0,0,0,100,0), -- 21:42:41
(@PATH,8,1242.331,1979.81,12.17621,0,0,0,0,100,0), -- 21:42:47
(@PATH,9,1221.198,1970.09,10.64629,0,0,0,0,100,0), -- 21:42:57
(@PATH,10,1206.895,1964.751,10.06111,0,0,0,0,100,0), -- 21:43:03
(@PATH,11,1186.084,1964.823,10.14644,0,0,0,0,100,0), -- 21:43:11
(@PATH,12,1168.252,1950.556,9.711398,0,0,0,0,100,0), -- 21:43:21
(@PATH,13,1167.201,1930.388,9.925863,0,0,0,0,100,0), -- 21:43:30
(@PATH,14,1173.539,1917.193,12.24881,0,0,0,0,100,0), -- 21:43:36
(@PATH,15,1183.568,1895.232,14.90211,0,0,0,0,100,0), -- 21:43:46
(@PATH,16,1192.336,1879.673,16.86435,0,0,0,0,100,0), -- 21:43:53
(@PATH,17,1211.627,1866.091,15.35263,0,0,0,0,100,0), -- 21:44:03
(@PATH,18,1238.959,1854.467,9.821017,0,0,0,0,100,0), -- 21:44:15
(@PATH,19,1248.241,1836.601,10.78487,0,0,0,0,100,0), -- 21:44:23
(@PATH,20,1274.907,1834.172,18.62721,0,0,0,0,100,0), -- 21:44:36
(@PATH,21,1273.366,1866.705,20.1383,0,0,0,0,100,0); -- 21:44:50
@@ -0,0 +1,111 @@
-- Pathing for Ix'lar the Underlord Entry: 45744 'TDB FORMAT'
SET @NPC := 319950;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=2845.473,`position_y`=-4767.625,`position_z`=84.60523 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,2845.473,-4767.625,84.60523,0,0,0,0,100,0),
(@PATH,2,2854.41,-4778.39,91.96474,0,0,0,0,100,0),
(@PATH,3,2862.23,-4789.15,95.09084,0,0,0,0,100,0),
(@PATH,4,2856.74,-4803.69,94.67984,0,0,0,0,100,0),
(@PATH,5,2842.84,-4805.25,97.01968,0,0,0,0,100,0),
(@PATH,6,2833.87,-4790.56,96.84133,0,0,0,0,100,0),
(@PATH,7,2825.65,-4788.4,99.6292,0,0,0,0,100,0),
(@PATH,8,2812.69,-4791.82,95.80302,0,0,0,0,100,0),
(@PATH,9,2805.72,-4798.94,90.90422,0,0,0,0,100,0),
(@PATH,10,2795.53,-4802.25,85.21287,0,0,0,0,100,0),
(@PATH,11,2783.56,-4801.21,83.14036,0,0,0,0,100,0),
(@PATH,12,2768.65,-4800.15,79.33762,0,0,0,0,100,0),
(@PATH,13,2755.91,-4794.9,76.57204,0,0,0,0,100,0),
(@PATH,14,2747,-4777.48,76.48952,0,0,0,0,100,0),
(@PATH,15,2748.14,-4746.14,76.97128,0,0,0,0,100,0),
(@PATH,16,2747.03,-4722.73,74.83576,0,0,0,0,100,0),
(@PATH,17,2750.93,-4698.12,78.95863,0,0,0,0,100,0),
(@PATH,18,2760.24,-4670.02,80.02687,0,0,0,0,100,0),
(@PATH,19,2770.4,-4660.86,86.92216,0,0,0,0,100,0),
(@PATH,20,2783.42,-4664.73,92.67192,0,0,0,0,100,0),
(@PATH,21,2797.51,-4678.94,95.49097,0,0,0,0,100,0),
(@PATH,22,2809.22,-4682.13,95.92142,0,0,0,0,100,0),
(@PATH,23,2826.65,-4680.09,90.41763,0,0,0,0,100,0),
(@PATH,24,2838.29,-4692.48,93.17684,0,0,0,0,100,0),
(@PATH,25,2853.44,-4706.6,89.93577,0,0,0,0,100,0),
(@PATH,26,2861.5,-4729.15,82.22752,0,0,0,0,100,0),
(@PATH,27,2855.89,-4746.56,81.98978,0,0,0,0,100,0);
-- Pathing for Yetimus the Yeti Lord Entry: 47484 'TDB FORMAT'
SET @NPC := 323060;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-151.922,`position_y`=-171.311,`position_z`=104.9993 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,-151.922,-171.311,104.9993,0,0,0,0,100,0),
(@PATH,2,-197.392,-164.851,92.99743,0,0,0,0,100,0),
(@PATH,3,-240.981,-167.431,80.67632,0,0,0,0,100,0),
(@PATH,4,-279.948,-174.962,74.14382,0,0,0,0,100,0),
(@PATH,5,-301.554,-187.203,68.3701,0,0,0,0,100,0),
(@PATH,6,-319.957,-198.203,64.63304,0,0,0,0,100,0),
(@PATH,7,-348.99,-235.068,62.78932,0,0,0,0,100,0),
(@PATH,8,-368.51,-265.285,60.20347,0,0,0,0,100,0),
(@PATH,9,-381.052,-305.778,59.71421,0,0,0,0,100,0),
(@PATH,10,-383.299,-340.087,59.16272,0,0,0,0,100,0),
(@PATH,11,-370.479,-366.644,58.37293,0,0,0,0,100,0),
(@PATH,12,-349.299,-399.33,58.9684,0,0,0,0,100,0),
(@PATH,13,-324.72,-430.033,59.33606,0,0,0,0,100,0),
(@PATH,14,-297.215,-456.95,60.7625,0,0,0,0,100,0),
(@PATH,15,-268.215,-460.696,64.35992,0,0,0,0,100,0),
(@PATH,16,-247.248,-462.217,65.86039,0,0,0,0,100,0),
(@PATH,17,-222.099,-464.127,67.62333,0,0,0,0,100,0),
(@PATH,18,-195.962,-466.226,71.86466,0,0,0,0,100,0),
(@PATH,19,-160.519,-459.127,76.6852,0,0,0,0,100,0),
(@PATH,20,-141.003,-451.144,76.6852,0,0,0,0,100,0),
(@PATH,21,-160.519,-459.127,76.6852,0,0,0,0,100,0),
(@PATH,22,-195.962,-466.226,71.86466,0,0,0,0,100,0),
(@PATH,23,-222.099,-464.127,67.62333,0,0,0,0,100,0),
(@PATH,24,-247.248,-462.217,65.86039,0,0,0,0,100,0),
(@PATH,25,-268.215,-460.696,64.35992,0,0,0,0,100,0),
(@PATH,26,-297.215,-456.95,60.7625,0,0,0,0,100,0),
(@PATH,27,-324.72,-430.033,59.33606,0,0,0,0,100,0),
(@PATH,28,-349.299,-399.33,58.9684,0,0,0,0,100,0),
(@PATH,29,-370.479,-366.644,58.37293,0,0,0,0,100,0),
(@PATH,30,-383.299,-340.087,59.16272,0,0,0,0,100,0),
(@PATH,31,-381.052,-305.778,59.71421,0,0,0,0,100,0),
(@PATH,32,-368.51,-265.285,60.20347,0,0,0,0,100,0),
(@PATH,33,-348.99,-235.068,62.78932,0,0,0,0,100,0),
(@PATH,34,-319.957,-198.203,64.63304,0,0,0,0,100,0),
(@PATH,35,-301.554,-187.203,68.3701,0,0,0,0,100,0),
(@PATH,36,-279.948,-174.962,74.14382,0,0,0,0,100,0),
(@PATH,37,-240.981,-167.431,80.67632,0,0,0,0,100,0),
(@PATH,38,-197.392,-164.851,92.99743,0,0,0,0,100,0);
-- Pathing for Infernus Entry: 49266 'TDB FORMAT'
SET @NPC := 322294;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-573.0382,`position_y`=-1449.427,`position_z`=53.92358 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,-573.0382,-1449.427,53.92358,0,0,0,0,100,0),
(@PATH,2,-561.0801,-1444.299,52.56591,0,0,0,0,100,0),
(@PATH,3,-554.1354,-1448.941,52.56591,0,0,0,0,100,0),
(@PATH,4,-552.0695,-1463.915,52.56591,0,0,0,0,100,0),
(@PATH,5,-553.8038,-1475.297,52.56591,0,0,0,0,100,0),
(@PATH,6,-565.9965,-1476.443,52.67285,0,0,0,0,100,0),
(@PATH,7,-573.3889,-1463.563,52.94677,0,0,0,0,100,0);
-- Pathing for Teracula Entry: 49265 'TDB FORMAT'
SET @NPC := 322435;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-462.533,`position_y`=-1424.408,`position_z`=90.77872 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,1,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,-462.533,-1424.408,90.77872,0,0,0,0,100,0),
(@PATH,2,-449.6858,-1420.599,96.06876,0,0,0,0,100,0),
(@PATH,3,-462.533,-1424.408,90.77872,0,0,0,0,100,0),
(@PATH,4,-477.5868,-1429.043,88.90503,0,0,0,0,100,0);
@@ -0,0 +1,325 @@
-- Pathing for Stormwind Guard Entry: 1423 'TDB FORMAT'
SET @NPC := 281479;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-9621.585,`position_y`=-1009.805,`position_z`=41.4601 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,257,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,-9621.585,-1009.805,41.4601,0,0,0,0,100,0),
(@PATH,2,-9622.979,-993.5161,42.51941,0,0,0,0,100,0),
(@PATH,3,-9616.812,-971.4866,43.64319,0,0,0,0,100,0),
(@PATH,4,-9605.688,-952.9254,43.84697,0,0,0,0,100,0),
(@PATH,5,-9589.601,-935.541,43.71594,0,0,0,0,100,0),
(@PATH,6,-9581.84,-917.2405,43.88842,0,0,0,0,100,0),
(@PATH,7,-9582.131,-892.7952,43.52868,0,0,0,0,100,0),
(@PATH,8,-9587.052,-870.2479,43.77868,0,0,0,0,100,0),
(@PATH,9,-9603.133,-848.3824,43.8069,0,0,0,0,100,0),
(@PATH,10,-9635.435,-813.6964,43.84379,0,0,0,0,100,0),
(@PATH,11,-9646.747,-797.5594,43.59379,0,0,0,0,100,0),
(@PATH,12,-9651.212,-783.6508,44.32621,0,0,0,0,100,0),
(@PATH,13,-9651.457,-762.5749,44.47965,0,0,0,0,100,0),
(@PATH,14,-9656.33,-740.673,44.61954,0,0,0,0,100,0),
(@PATH,15,-9656.645,-723.0509,44.66413,0,0,0,0,100,0),
(@PATH,16,-9649.04,-701.8206,46.00813,0,0,0,0,100,0),
(@PATH,17,-9643.346,-663.4222,49.36496,0,0,0,0,100,0),
(@PATH,18,-9628.837,-641.6657,51.14138,0,0,0,0,100,0),
(@PATH,19,-9622.42,-603.7773,52.84998,0,0,0,0,100,0),
(@PATH,20,-9619.694,-574.7324,54.19883,0,0,0,0,100,0),
(@PATH,21,-9617.313,-551.6019,54.49004,0,0,0,0,100,0),
(@PATH,22,-9611.551,-532.0573,54.7783,0,0,0,0,100,0),
(@PATH,23,-9602.272,-517.8843,56.76878,0,0,0,0,100,0),
(@PATH,24,-9593.436,-504.3423,57.52607,0,0,0,0,100,0),
(@PATH,25,-9589.494,-487.5282,57.76851,0,0,0,0,100,0),
(@PATH,26,-9590.743,-469.7306,57.8166,0,0,0,0,100,0),
(@PATH,27,-9600.497,-453.0271,57.78099,0,0,0,0,100,0),
(@PATH,28,-9608.497,-436.1051,57.36327,0,0,0,0,100,0),
(@PATH,29,-9614.505,-416.2884,57.66486,0,0,0,0,100,0),
(@PATH,30,-9617.868,-395.8977,57.95574,0,0,0,0,100,0),
(@PATH,31,-9619.874,-371.5169,57.58074,0,0,0,0,100,0),
(@PATH,32,-9620.904,-344.161,57.28194,0,0,0,0,100,0),
(@PATH,33,-9620.884,-320.5441,57.52703,0,0,0,0,100,0),
(@PATH,34,-9618.642,-297.6285,57.18179,0,0,0,0,100,0),
(@PATH,35,-9612.653,-276.4153,57.76284,0,0,0,0,100,0),
(@PATH,36,-9608.691,-255.3432,57.32165,0,0,0,0,100,0),
(@PATH,37,-9598.686,-228.6033,57.3935,0,0,0,0,100,0),
(@PATH,38,-9588.345,-202.6797,57.81245,0,0,0,0,100,0),
(@PATH,39,-9578.535,-171.4949,57.50352,0,0,0,0,100,0),
(@PATH,40,-9567.966,-150.9942,57.1911,0,0,0,0,100,0),
(@PATH,41,-9553.459,-136.2681,57.28034,0,0,0,0,100,0),
(@PATH,42,-9549.182,-112.0365,57.55236,0,0,0,0,100,0),
(@PATH,43,-9548.437,-83.4119,57.64455,0,0,0,0,100,0),
(@PATH,44,-9546.561,-64.21647,57.19081,0,0,0,0,100,0),
(@PATH,45,-9542.052,-43.97417,56.69081,0,0,0,0,100,0),
(@PATH,46,-9531.666,-17.71886,56.00526,0,0,0,0,100,0),
(@PATH,47,-9518.505,4.58865,56.11089,0,0,0,0,100,0),
(@PATH,48,-9505.715,31.62967,56.48589,0,0,0,0,100,0),
(@PATH,49,-9495.036,54.66113,55.81353,0,0,0,0,100,0),
(@PATH,50,-9492.798,64.35981,56.02752,0,6000,0,0,100,0),
(@PATH,51,-9497.884,48.81619,55.94793,0,0,0,0,100,0),
(@PATH,52,-9503.121,36.35319,56.42255,0,0,0,0,100,0),
(@PATH,53,-9509.772,23.9451,56.53191,0,0,0,0,100,0),
(@PATH,54,-9517.83,6.747939,56.11089,0,0,0,0,100,0),
(@PATH,55,-9529.744,-15.72743,55.8871,0,0,0,0,100,0),
(@PATH,56,-9541.357,-44.91298,56.76772,0,0,0,0,100,0),
(@PATH,57,-9547.372,-71.95128,57.51955,0,0,0,0,100,0),
(@PATH,58,-9549.507,-109.4462,57.5067,0,0,0,0,100,0),
(@PATH,59,-9556.684,-136.5528,57.55939,0,0,0,0,100,0),
(@PATH,60,-9567.811,-151.0182,57.1723,0,0,0,0,100,0),
(@PATH,61,-9578.885,-170.2882,57.37852,0,0,0,0,100,0),
(@PATH,62,-9586.776,-195.1395,57.62852,0,0,0,0,100,0),
(@PATH,63,-9598.216,-224.6504,57.30341,0,0,0,0,100,0),
(@PATH,64,-9608.648,-258.0852,57.30822,0,0,0,0,100,0),
(@PATH,65,-9614.821,-289.097,57.59048,0,0,0,0,100,0),
(@PATH,66,-9618.106,-312.9915,57.58343,0,0,0,0,100,0),
(@PATH,67,-9620.264,-340.5638,57.52462,0,0,0,0,100,0),
(@PATH,68,-9619.762,-370.9549,57.58074,0,0,0,0,100,0),
(@PATH,69,-9618.118,-393.6722,57.83074,0,0,0,0,100,0),
(@PATH,70,-9610.834,-427.7363,57.52277,0,0,0,0,100,0),
(@PATH,71,-9602.774,-445.216,57.62401,0,0,0,0,100,0),
(@PATH,72,-9596.105,-461.7981,57.74839,0,0,0,0,100,0),
(@PATH,73,-9591.105,-476.2582,57.76851,0,0,0,0,100,0),
(@PATH,74,-9591.471,-488.4674,57.84004,0,0,0,0,100,0),
(@PATH,75,-9593.778,-501.4398,57.38178,0,0,0,0,100,0),
(@PATH,76,-9598.513,-512.4593,57.47431,0,0,0,0,100,0),
(@PATH,77,-9609.811,-533.6465,54.86504,0,0,0,0,100,0),
(@PATH,78,-9615.971,-550.82,54.49004,0,0,0,0,100,0),
(@PATH,79,-9618.966,-571.0148,54.37461,0,0,0,0,100,0),
(@PATH,80,-9620.506,-590.8423,53.78599,0,0,0,0,100,0),
(@PATH,81,-9623.524,-620.6938,51.94861,0,0,0,0,100,0),
(@PATH,82,-9628.995,-638.2269,51.17922,0,0,0,0,100,0),
(@PATH,83,-9636.7,-653.1119,49.69407,0,0,0,0,100,0),
(@PATH,84,-9641.278,-663.9442,49.39695,0,0,0,0,100,0),
(@PATH,85,-9645.316,-681.183,48.00885,0,0,0,0,100,0),
(@PATH,86,-9650.676,-701.9413,45.99372,0,0,0,0,100,0),
(@PATH,87,-9653.724,-722.3216,44.67292,0,0,0,0,100,0),
(@PATH,88,-9654.573,-742.368,44.55119,0,0,0,0,100,0),
(@PATH,89,-9652.612,-766.4833,44.30216,0,0,0,0,100,0),
(@PATH,90,-9648.009,-792.9749,43.62431,0,0,0,0,100,0),
(@PATH,91,-9638.621,-808.6445,43.71879,0,0,0,0,100,0),
(@PATH,92,-9626.769,-822.2813,43.88491,0,0,0,0,100,0),
(@PATH,93,-9613.571,-836.7086,43.62306,0,0,0,0,100,0),
(@PATH,94,-9600.535,-851.837,43.6819,0,0,0,0,100,0),
(@PATH,95,-9589.787,-865.6964,43.83097,0,0,0,0,100,0),
(@PATH,96,-9585.493,-875.5536,43.90368,0,0,0,0,100,0),
(@PATH,97,-9584.774,-898.893,43.90368,0,0,0,0,100,0),
(@PATH,98,-9586.063,-915.4184,43.90355,0,0,0,0,100,0),
(@PATH,99,-9592.028,-931.4844,43.74437,0,0,0,0,100,0),
(@PATH,100,-9598.08,-942.4412,43.92321,0,0,0,0,100,0),
(@PATH,101,-9607.78,-959.0113,43.49467,0,0,0,0,100,0),
(@PATH,102,-9615.448,-974.1688,43.85193,0,0,0,0,100,0),
(@PATH,103,-9620.891,-993.4722,42.6139,0,0,0,0,100,0),
(@PATH,104,-9620.597,-1003.663,42.25624,0,0,0,0,100,0),
(@PATH,105,-9620.338,-1014.109,41.06777,0,0,0,0,100,0),
(@PATH,106,-9619.945,-1024.693,40.49306,0,0,0,0,100,0),
(@PATH,107,-9619.242,-1036.472,39.87387,0,6000,0,0,100,0);
-- Pathing for Stormwind Guard Entry: 1423 'TDB FORMAT'
SET @NPC := 280111;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-9083.599,`position_y`=-53.3508,`position_z`=86.42607 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,257,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,-9083.599,-53.3508,86.42607,0,0,0,0,100,0),
(@PATH,2,-9098.672,-65.61827,84.054,0,0,0,0,100,0),
(@PATH,3,-9109.419,-75.7207,82.09222,0,0,0,0,100,0),
(@PATH,4,-9125.424,-85.16591,78.16302,0,0,0,0,100,0),
(@PATH,5,-9142.284,-95.87967,75.0947,0,0,0,0,100,0),
(@PATH,6,-9163.195,-108.5354,72.56712,0,0,0,0,100,0),
(@PATH,7,-9176.171,-111.9833,71.24508,0,0,0,0,100,0),
(@PATH,8,-9195.773,-112.7946,71.12057,0,0,0,0,100,0),
(@PATH,9,-9208.957,-109.3175,71.1289,0,0,0,0,100,0),
(@PATH,10,-9225.822,-104.7172,71.1289,0,0,0,0,100,0),
(@PATH,11,-9238.654,-99.04698,70.70847,0,0,0,0,100,0),
(@PATH,12,-9249.91,-91.48221,70.40672,0,0,0,0,100,0),
(@PATH,13,-9268.238,-77.89268,68.6869,0,0,0,0,100,0),
(@PATH,14,-9280.204,-67.65853,68.24964,0,0,0,0,100,0),
(@PATH,15,-9297.876,-60.61285,67.34437,0,0,0,0,100,0),
(@PATH,16,-9322.913,-53.6008,66.44393,0,0,0,0,100,0),
(@PATH,17,-9335.962,-49.37478,65.8247,0,0,0,0,100,0),
(@PATH,18,-9351.479,-40.11382,64.81542,0,0,0,0,100,0),
(@PATH,19,-9362.026,-29.91482,63.76466,0,0,0,0,100,0),
(@PATH,20,-9376.168,-14.78429,62.24424,0,0,0,0,100,0),
(@PATH,21,-9397.745,6.895725,60.04395,0,0,0,0,100,0),
(@PATH,22,-9409.909,21.16298,58.82724,0,0,0,0,100,0),
(@PATH,23,-9438.457,54.57856,56.02,0,6000,0,0,100,0),
(@PATH,24,-9431.209,46.55914,56.69352,0,0,0,0,100,0),
(@PATH,25,-9421.634,36.47081,57.31852,0,0,0,0,100,0),
(@PATH,26,-9411.369,24.51682,58.24777,0,0,0,0,100,0),
(@PATH,27,-9401.32,13.38477,59.67916,0,0,0,0,100,0),
(@PATH,28,-9390.167,-1.145291,60.82187,0,0,0,0,100,0),
(@PATH,29,-9378.083,-13.01411,61.88828,0,0,0,0,100,0),
(@PATH,30,-9365.354,-27.72938,63.36524,0,0,0,0,100,0),
(@PATH,31,-9351.892,-40.30295,64.81542,0,0,0,0,100,0),
(@PATH,32,-9337.786,-50.15527,65.67455,0,0,0,0,100,0),
(@PATH,33,-9329.192,-52.84429,66.13094,0,0,0,0,100,0),
(@PATH,34,-9314.485,-56.48058,66.70492,0,0,0,0,100,0),
(@PATH,35,-9302.469,-59.14703,66.93221,0,0,0,0,100,0),
(@PATH,36,-9290.404,-63.35688,67.5221,0,0,0,0,100,0),
(@PATH,37,-9281.472,-69.32259,68.09779,0,0,0,0,100,0),
(@PATH,38,-9270.33,-77.17632,68.6869,0,0,0,0,100,0),
(@PATH,39,-9258.729,-86.89681,69.7136,0,0,0,0,100,0),
(@PATH,40,-9245.781,-95.48481,70.52708,0,0,0,0,100,0),
(@PATH,41,-9235.747,-101.5669,70.77646,0,0,0,0,100,0),
(@PATH,42,-9228.748,-104.1309,70.99169,0,0,0,0,100,0),
(@PATH,43,-9219.661,-106.7042,71.2539,0,0,0,0,100,0),
(@PATH,44,-9208.192,-109.8,71.17455,0,0,0,0,100,0),
(@PATH,45,-9197.428,-112.1889,71.09542,0,0,0,0,100,0),
(@PATH,46,-9185.816,-112.7407,70.99557,0,0,0,0,100,0),
(@PATH,47,-9174.032,-111.8417,71.54903,0,0,0,0,100,0),
(@PATH,48,-9159.315,-106.846,73.04197,0,0,0,0,100,0),
(@PATH,49,-9149.284,-100.6613,74.23655,0,0,0,0,100,0),
(@PATH,50,-9135.363,-91.4846,76.24387,0,0,0,0,100,0),
(@PATH,51,-9119.705,-80.96517,79.70452,0,0,0,0,100,0),
(@PATH,52,-9109.234,-73.00748,82.2177,0,0,0,0,100,0),
(@PATH,53,-9097.453,-63.84201,84.35332,0,0,0,0,100,0),
(@PATH,54,-9090.091,-58.36013,85.42094,0,0,0,0,100,0),
(@PATH,55,-9084.711,-52.9579,86.38237,0,0,0,0,100,0),
(@PATH,56,-9079.419,-48.8967,87.35429,0,0,0,0,100,0),
(@PATH,57,-9070.88,-43.41764,88.0645,0,6000,0,0,100,0);
-- Pathing for Kira Songshine Entry: 3937 'TDB FORMAT'
SET @NPC := 280672;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-9493.627,`position_y`=67.18815,`position_z`=56.24675 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,257,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,-9493.627,67.18815,56.24675,0,0,0,0,100,0),
(@PATH,2,-9486.809,89.65723,56.21941,0,0,0,0,100,0),
(@PATH,3,-9483.946,102.302,56.50797,0,0,0,0,100,0),
(@PATH,4,-9480.245,126.3048,56.63297,0,0,0,0,100,0),
(@PATH,5,-9482.919,145.2651,56.43309,0,0,0,0,100,0),
(@PATH,6,-9485.429,167.3975,56.05416,0,0,0,0,100,0),
(@PATH,7,-9484.816,180.0712,55.42916,0,0,0,0,100,0),
(@PATH,8,-9493.019,196.9338,54.55416,0,0,0,0,100,0),
(@PATH,9,-9508.471,218.0667,52.96415,0,0,0,0,100,0),
(@PATH,10,-9533.104,242.1964,50.86973,0,0,0,0,100,0),
(@PATH,11,-9519.216,232.3553,51.83915,0,0,0,0,100,0),
(@PATH,12,-9515.605,227.5241,52.2238,0,0,0,0,100,0),
(@PATH,13,-9503.669,216.6386,52.90214,0,0,0,0,100,0),
(@PATH,14,-9498.017,202.3757,54.15273,0,0,0,0,100,0),
(@PATH,15,-9486.037,183.3565,55.22677,0,0,0,0,100,0),
(@PATH,16,-9483.614,166.1485,56.05247,0,0,0,0,100,0),
(@PATH,17,-9481.871,138.393,56.67747,0,0,0,0,100,0),
(@PATH,18,-9483.646,118.8074,56.60807,0,0,0,0,100,0),
(@PATH,19,-9486.335,100.2849,56.50797,0,0,0,0,100,0),
(@PATH,20,-9487.605,81.91924,56.0739,0,0,0,0,100,0),
(@PATH,21,-9485.286,71.61192,56.40178,0,0,0,0,100,0),
(@PATH,22,-9479.711,67.17296,56.32232,0,0,0,0,100,0),
(@PATH,23,-9467.877,61.33068,56.1054,0,0,0,0,100,0),
(@PATH,24,-9454.594,66.6288,56.20298,0,0,0,0,100,0),
(@PATH,25,-9415.596,86.5546,56.99038,0,0,0,0,100,0),
(@PATH,26,-9402.721,93.8989,58.41055,0,0,0,0,100,0),
(@PATH,27,-9383.628,105.0891,60.03624,0,0,0,0,100,0),
(@PATH,28,-9362.592,111.672,61.55702,0,0,0,0,100,0),
(@PATH,29,-9337.428,124.4685,63.71767,0,0,0,0,100,0),
(@PATH,30,-9316.489,136.0714,64.95474,0,0,0,0,100,0),
(@PATH,31,-9298.161,143.4155,65.91209,0,0,0,0,100,0),
(@PATH,32,-9273.096,151.2024,67.00413,0,0,0,0,100,0),
(@PATH,33,-9256.78,159.3222,67.66848,0,0,0,0,100,0),
(@PATH,34,-9242.877,174.1646,67.97204,0,0,0,0,100,0),
(@PATH,35,-9232.261,186.1395,67.72204,0,0,0,0,100,0),
(@PATH,36,-9217.805,203.6647,69.03122,0,0,0,0,100,0),
(@PATH,37,-9201.397,220.0502,71.15402,0,0,0,0,100,0),
(@PATH,38,-9188.232,236.8916,72.44244,0,0,0,0,100,0),
(@PATH,39,-9182.984,255.7783,73.85345,0,0,0,0,100,0),
(@PATH,40,-9182.252,275.1166,75.44212,0,0,0,0,100,0),
(@PATH,41,-9180.925,301.3294,78.33094,0,0,0,0,100,0),
(@PATH,42,-9178.171,323.0379,80.88319,0,0,0,0,100,0),
(@PATH,43,-9173.903,335.753,83.66998,0,0,0,0,100,0),
(@PATH,44,-9168.686,347.0231,86.27471,0,0,0,0,100,0),
(@PATH,45,-9142.421,375.9646,90.75526,0,0,0,0,100,0),
(@PATH,46,-9125.449,389.9619,91.57055,0,0,0,0,100,0),
(@PATH,47,-9144.014,376.6461,90.75526,0,0,0,0,100,0),
(@PATH,48,-9150.359,370.6424,90.63026,0,0,0,0,100,0),
(@PATH,49,-9159.769,358.9712,89.09229,0,0,0,0,100,0),
(@PATH,50,-9169.689,347.3052,86.06768,0,0,0,0,100,0),
(@PATH,51,-9176.393,336.1326,83.34795,0,0,0,0,100,0),
(@PATH,52,-9179.039,324.0334,81.12244,0,0,0,0,100,0),
(@PATH,53,-9181.582,310.6828,79.00208,0,0,0,0,100,0),
(@PATH,54,-9182.38,299.1464,77.95396,0,0,0,0,100,0),
(@PATH,55,-9183.653,286.0146,76.42735,0,0,0,0,100,0),
(@PATH,56,-9184.186,259.5755,74.10345,0,0,0,0,100,0),
(@PATH,57,-9187.476,239.7987,72.50726,0,0,0,0,100,0),
(@PATH,58,-9193.939,228.3685,71.82954,0,0,0,0,100,0),
(@PATH,59,-9217.061,204.2547,69.10202,0,0,0,0,100,0),
(@PATH,60,-9229.925,191.6477,68.03234,0,0,0,0,100,0),
(@PATH,61,-9239.118,181.4567,67.84704,0,0,0,0,100,0),
(@PATH,62,-9252.867,160.5058,67.88796,0,0,0,0,100,0),
(@PATH,63,-9270.517,152.484,67.12913,0,0,0,0,100,0),
(@PATH,64,-9281.984,150.6615,66.75413,0,0,0,0,100,0),
(@PATH,65,-9303.524,142.9477,65.81363,0,0,0,0,100,0),
(@PATH,66,-9326.493,133.6549,64.28152,0,0,0,0,100,0),
(@PATH,67,-9338.177,126.1314,63.79213,0,0,0,0,100,0),
(@PATH,68,-9357.066,114.8676,62.03004,0,0,0,0,100,0),
(@PATH,69,-9376.01,105.7821,60.5753,0,0,0,0,100,0),
(@PATH,70,-9396.483,100.0127,58.82322,0,0,0,0,100,0),
(@PATH,71,-9415.729,90.13653,57.42837,0,0,0,0,100,0),
(@PATH,72,-9430.02,79.53779,56.53139,0,0,0,0,100,0),
(@PATH,73,-9441.903,69.07547,56.12108,0,0,0,0,100,0),
(@PATH,74,-9459.128,61.95774,55.895,0,0,0,0,100,0),
(@PATH,75,-9471.797,63.62576,56.15252,0,0,0,0,100,0),
(@PATH,76,-9492.84,58.88786,55.85588,0,0,0,0,100,0),
(@PATH,77,-9502.176,40.73476,56.34699,0,0,0,0,100,0),
(@PATH,78,-9513.744,15.73003,56.48589,0,0,0,0,100,0),
(@PATH,79,-9519.953,3.746257,56.11089,0,0,0,0,100,0),
(@PATH,80,-9526.677,-8.577745,55.88026,0,0,0,0,100,0),
(@PATH,81,-9535.507,-27.89106,55.83387,0,0,0,0,100,0),
(@PATH,82,-9544.865,-53.43615,56.81581,0,0,0,0,100,0),
(@PATH,83,-9550.579,-84.43788,57.65163,0,0,0,0,100,0),
(@PATH,84,-9550.719,-113.8145,57.65856,0,0,0,0,100,0),
(@PATH,85,-9549.074,-80.8469,57.51955,0,0,0,0,100,0),
(@PATH,86,-9543.954,-52.83002,56.81581,0,0,0,0,100,0),
(@PATH,87,-9537.006,-30.56196,55.88392,0,0,0,0,100,0),
(@PATH,88,-9529.335,-14.98915,55.83778,0,0,0,0,100,0),
(@PATH,89,-9522.49,-4.730361,55.99379,0,0,0,0,100,0),
(@PATH,90,-9517.441,9.093316,56.23589,0,0,0,0,100,0),
(@PATH,91,-9508.014,28.54688,56.48589,0,0,0,0,100,0),
(@PATH,92,-9496.207,50.32487,55.88494,0,0,0,0,100,0);
-- Pathing for Stormwind Royal Guard Entry: 1756 'TDB FORMAT'
SET @NPC := 314291;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-8415.07,`position_y`=299.125,`position_z`=147.0138 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,257,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,-8415.07,299.125,147.0138,0,0,0,0,100,0),
(@PATH,2,-8409.74,292.457,147.2607,0,0,0,0,100,0),
(@PATH,3,-8389.694,267.0654,155.3475,0,0,0,0,100,0),
(@PATH,4,-8381.73,257.153,155.3472,0,0,0,0,100,0),
(@PATH,5,-8363.61,254.408,155.3472,0,0,0,0,100,0),
(@PATH,6,-8384.62,237.797,155.3471,0,0,0,0,100,0),
(@PATH,7,-8383.19,255.96,155.3434,0,0,0,0,100,0),
(@PATH,8,-8391.108,265.9411,155.3471,0,0,0,0,100,0),
(@PATH,9,-8411.21,291.196,147.2786,0,0,0,0,100,0),
(@PATH,10,-8417.51,299.163,147.0138,0,0,0,0,100,0),
(@PATH,11,-8434.2,321.583,145.1534,0,4000,0,0,100,0),
(@PATH,12,-8416.243,300.5492,147.0542,0,0,0,0,100,0),
(@PATH,13,-8401.91,311.34,147.0138,0,0,0,0,100,0),
(@PATH,14,-8399.65,329.141,147.0138,0,0,0,0,100,0),
(@PATH,15,-8381.1,327.168,147.0138,0,0,0,0,100,0),
(@PATH,16,-8383.38,308.866,147.0138,0,0,0,0,100,0),
(@PATH,17,-8401.068,310.4666,147.0138,0,0,0,0,100,0);
-- Pathing for Stormwind City Guard Entry: 68 'TDB FORMAT'
SET @NPC := 313891;
SET @PATH := @NPC * 10;
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-9144.325,`position_y`=374.0361,`position_z`=90.75526 WHERE `guid`=@NPC;
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,257,0, '');
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
(@PATH,1,-9144.325,374.0361,90.75526,0,0,0,0,100,0),
(@PATH,2,-9125.303,391.6143,91.78637,0,0,0,0,100,0),
(@PATH,3,-9091.403,414.3217,92.16946,0,0,0,0,100,0),
(@PATH,4,-9073.301,427.18,92.02811,0,0,0,0,100,0),
(@PATH,5,-9091.403,414.3217,92.16946,0,0,0,0,100,0),
(@PATH,6,-9125.303,391.6143,91.78637,0,0,0,0,100,0),
(@PATH,7,-9144.325,374.0361,90.75526,0,0,0,0,100,0),
(@PATH,8,-9165.44,351.6357,87.38135,0,0,0,0,100,0);
@@ -0,0 +1,2 @@
--
DELETE FROM `creature_queststarter` WHERE `id` = 44906;
@@ -0,0 +1,2 @@
--
UPDATE `creature_template` SET `flags_extra`=`flags_extra`|128 WHERE `entry` = 42940;
@@ -0,0 +1,2 @@
-- correct typo in account set gmlevel command help
UPDATE `command` SET `help`="Syntax: .account set gmlevel [$account] #level [#realmID]\r\n\r\nSet the security level for targeted player (can't be used at self) or for account $name to a level of #level on the realm #realmID.\r\n\r\n#level may range from 0 to 3.\r\n\r\n#realmID may be -1 for all realms." WHERE `name`='account set gmlevel';
@@ -0,0 +1,2 @@
--
UPDATE `quest_template_addon` SET `PrevQuestID`=12976 WHERE `id`=12977;
@@ -0,0 +1,9 @@
--
UPDATE `gameobject_addon` SET `invisibilityType`=9, `invisibilityValue`=1000 WHERE `guid`=270;
UPDATE `gameobject_addon` SET `invisibilityType`=8, `invisibilityValue`=1000 WHERE `guid`=21077;
UPDATE `gameobject_addon` SET `invisibilityType`=5, `invisibilityValue`=1000 WHERE `guid`=21079;
DELETE FROM `spell_area` WHERE `spell` IN (56773,56772,56774) AND `area`=4438;
INSERT INTO `spell_area` (`spell`, `area`, `quest_start`, `quest_end`, `aura_spell`, `racemask`, `gender`, `autocast`, `quest_start_status`, `quest_end_status`) VALUES
(56773, 4438, 12987, 0, 0, 0, 2, 1, 66, 0),
(56772, 4438, 13001, 0, 0, 0, 2, 1, 64, 0),
(56774, 4438, 12976, 0, 0, 0, 2, 1, 64, 0);
@@ -0,0 +1,7 @@
UPDATE `smart_scripts` SET `link`=13 WHERE `entryorguid`=28213 AND `source_type`=0 AND `id`IN(8,10);
UPDATE `smart_scripts` SET `event_type`=7 WHERE `entryorguid`=28213 AND `source_type`=0 AND `id`=9 AND `link`=10;
DELETE FROM `smart_scripts` WHERE `entryorguid` =28213 AND `source_type`=0 AND `id`IN(13,14,6);
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
(28213, 0, 13, 0, 61, 0, 100, 512, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Hardknuckle Matriarch - On Respawn - Set Passive'),
(28213, 0, 14, 0, 61, 0, 100, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 21, 500, 0, 0, 0, 0, 0, 0, 'Hardknuckle Matriarch - On Data Set 1 1 - Start Attacking'),
(28213, 0, 6, 14, 61, 0, 100, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Hardknuckle Matriarch - On Data Set 1 1 - Set Aggresive');
+5
View File
@@ -22,6 +22,7 @@
#include "VMapDefinitions.h"
#include "Log.h"
#include "Errors.h"
#include "Metric.h"
#include <string>
#include <sstream>
@@ -347,6 +348,8 @@ namespace VMAP
// currently, core creates grids for all maps, whether it has terrain tiles or not
// so we need "fake" tile loads to know when we can unload map geometry
iLoadedTiles[packTileID(tileX, tileY)] = false;
TC_METRIC_EVENT("map_events", "LoadMapTile",
"Map: " + std::to_string(iMapID) + " TileX: " + std::to_string(tileX) + " TileY: " + std::to_string(tileY));
return true;
}
if (!iTreeValues)
@@ -473,6 +476,8 @@ namespace VMAP
}
}
iLoadedTiles.erase(tile);
TC_METRIC_EVENT("map_events", "UnloadMapTile",
"Map: " + std::to_string(iMapID) + " TileX: " + std::to_string(tileX) + " TileY: " + std::to_string(tileY));
}
void StaticMapTree::getModelInstances(ModelInstance* &models, uint32 &count)
+4 -4
View File
@@ -53,14 +53,14 @@
#include "Threading/LockedQueue.h"
#if PLATFORM == PLATFORM_WINDOWS
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
# include <ws2tcpip.h>
# if defined(__INTEL_COMPILER)
# if TRINITY_COMPILER == TRINITY_COMPILER_INTEL
# if !defined(BOOST_ASIO_HAS_MOVE)
# define BOOST_ASIO_HAS_MOVE
# endif // !defined(BOOST_ASIO_HAS_MOVE)
# endif // if defined(__INTEL_COMPILER)
# endif // if TRINITY_COMPILER == TRINITY_COMPILER_INTEL
#else
# include <sys/types.h>
@@ -71,7 +71,7 @@
# include <netdb.h>
#endif
#if COMPILER == COMPILER_MICROSOFT
#if TRINITY_COMPILER == TRINITY_COMPILER_MICROSOFT
#include <float.h>
+17 -17
View File
@@ -19,37 +19,37 @@
#ifndef TRINITY_COMPILERDEFS_H
#define TRINITY_COMPILERDEFS_H
#define PLATFORM_WINDOWS 0
#define PLATFORM_UNIX 1
#define PLATFORM_APPLE 2
#define PLATFORM_INTEL 3
#define TRINITY_PLATFORM_WINDOWS 0
#define TRINITY_PLATFORM_UNIX 1
#define TRINITY_PLATFORM_APPLE 2
#define TRINITY_PLATFORM_INTEL 3
// must be first (win 64 also define _WIN32)
#if defined( _WIN64 )
# define PLATFORM PLATFORM_WINDOWS
# define TRINITY_PLATFORM TRINITY_PLATFORM_WINDOWS
#elif defined( __WIN32__ ) || defined( WIN32 ) || defined( _WIN32 )
# define PLATFORM PLATFORM_WINDOWS
# define TRINITY_PLATFORM TRINITY_PLATFORM_WINDOWS
#elif defined( __APPLE_CC__ )
# define PLATFORM PLATFORM_APPLE
# define TRINITY_PLATFORM TRINITY_PLATFORM_APPLE
#elif defined( __INTEL_COMPILER )
# define PLATFORM PLATFORM_INTEL
# define TRINITY_PLATFORM TRINITY_PLATFORM_INTEL
#else
# define PLATFORM PLATFORM_UNIX
# define TRINITY_PLATFORM TRINITY_PLATFORM_UNIX
#endif
#define COMPILER_MICROSOFT 0
#define COMPILER_GNU 1
#define COMPILER_BORLAND 2
#define COMPILER_INTEL 3
#define TRINITY_COMPILER_MICROSOFT 0
#define TRINITY_COMPILER_GNU 1
#define TRINITY_COMPILER_BORLAND 2
#define TRINITY_COMPILER_INTEL 3
#ifdef _MSC_VER
# define COMPILER COMPILER_MICROSOFT
# define TRINITY_COMPILER TRINITY_COMPILER_MICROSOFT
#elif defined( __BORLANDC__ )
# define COMPILER COMPILER_BORLAND
# define TRINITY_COMPILER TRINITY_COMPILER_BORLAND
#elif defined( __INTEL_COMPILER )
# define COMPILER COMPILER_INTEL
# define TRINITY_COMPILER TRINITY_COMPILER_INTEL
#elif defined( __GNUC__ )
# define COMPILER COMPILER_GNU
# define TRINITY_COMPILER TRINITY_COMPILER_GNU
# define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
#else
# error "FATAL ERROR: Unknown compiler."
+1 -1
View File
@@ -38,7 +38,7 @@ namespace Trinity
} // namespace Trinity
#if COMPILER == COMPILER_MICROSOFT
#if TRINITY_COMPILER == TRINITY_COMPILER_MICROSOFT
#define ASSERT_BEGIN __pragma(warning(push)) __pragma(warning(disable: 4127))
#define ASSERT_END __pragma(warning(pop))
#else
@@ -5,7 +5,7 @@
//==========================================
#include "CompilerDefs.h"
#if PLATFORM == PLATFORM_WINDOWS && !defined(__MINGW32__)
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS && !defined(__MINGW32__)
#define WIN32_LEAN_AND_MEAN
#pragma warning(disable:4996)
#pragma warning(disable:4312)
+1 -1
View File
@@ -1,7 +1,7 @@
#ifndef _WHEATYEXCEPTIONREPORT_
#define _WHEATYEXCEPTIONREPORT_
#if PLATFORM == PLATFORM_WINDOWS && !defined(__MINGW32__)
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS && !defined(__MINGW32__)
#include <winnt.h>
#include <winternl.h>
+9 -9
View File
@@ -21,7 +21,7 @@
#include "CompilerDefs.h"
#if COMPILER == COMPILER_GNU
#if TRINITY_COMPILER == TRINITY_COMPILER_GNU
# if !defined(__STDC_FORMAT_MACROS)
# define __STDC_FORMAT_MACROS
# endif
@@ -55,7 +55,7 @@
# endif
#endif
#if PLATFORM == PLATFORM_WINDOWS
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
# define TRINITY_PATH_MAX MAX_PATH
# define _USE_MATH_DEFINES
# ifndef DECLSPEC_NORETURN
@@ -64,11 +64,11 @@
# ifndef DECLSPEC_DEPRECATED
# define DECLSPEC_DEPRECATED __declspec(deprecated)
# endif //DECLSPEC_DEPRECATED
#else //PLATFORM != PLATFORM_WINDOWS
#else // TRINITY_PLATFORM != TRINITY_PLATFORM_WINDOWS
# define TRINITY_PATH_MAX PATH_MAX
# define DECLSPEC_NORETURN
# define DECLSPEC_DEPRECATED
#endif //PLATFORM
#endif // TRINITY_PLATFORM
#if !defined(COREDEBUG)
# define TRINITY_INLINE inline
@@ -79,21 +79,21 @@
# define TRINITY_INLINE
#endif //!COREDEBUG
#if COMPILER == COMPILER_GNU
#if TRINITY_COMPILER == TRINITY_COMPILER_GNU
# define ATTR_NORETURN __attribute__((__noreturn__))
# define ATTR_PRINTF(F, V) __attribute__ ((__format__ (__printf__, F, V)))
# define ATTR_DEPRECATED __attribute__((__deprecated__))
#else //COMPILER != COMPILER_GNU
#else //TRINITY_COMPILER != TRINITY_COMPILER_GNU
# define ATTR_NORETURN
# define ATTR_PRINTF(F, V)
# define ATTR_DEPRECATED
#endif //COMPILER == COMPILER_GNU
#endif //TRINITY_COMPILER == TRINITY_COMPILER_GNU
#ifdef TRINITY_API_USE_DYNAMIC_LINKING
# if COMPILER == COMPILER_MICROSOFT
# if TRINITY_COMPILER == TRINITY_COMPILER_MICROSOFT
# define TC_API_EXPORT __declspec(dllexport)
# define TC_API_IMPORT __declspec(dllimport)
# elif COMPILER == COMPILER_GNU
# elif TRINITY_COMPILER == TRINITY_COMPILER_GNU
# define TC_API_EXPORT __attribute__((visibility("default")))
# define TC_API_IMPORT
# else
+4 -4
View File
@@ -41,17 +41,17 @@ char const* GitRevision::GetFullDatabase()
return _FULL_DATABASE;
}
#if PLATFORM == PLATFORM_WINDOWS
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
# ifdef _WIN64
# define TRINITY_PLATFORM_STR "Win64"
# else
# define TRINITY_PLATFORM_STR "Win32"
# endif
#elif PLATFORM == PLATFORM_APPLE
#elif TRINITY_PLATFORM == TRINITY_PLATFORM_APPLE
# define TRINITY_PLATFORM_STR "MacOSX"
#elif PLATFORM == PLATFORM_INTEL
#elif TRINITY_PLATFORM == TRINITY_PLATFORM_INTEL
# define TRINITY_PLATFORM_STR "Intel"
#else // PLATFORM_UNIX
#else // TRINITY_PLATFORM_UNIX
# define TRINITY_PLATFORM_STR "Unix"
#endif
+3 -3
View File
@@ -21,7 +21,7 @@
#include "Config.h"
#include "Util.h"
#if PLATFORM == PLATFORM_WINDOWS
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
#include <Windows.h>
#endif
@@ -66,7 +66,7 @@ void AppenderConsole::InitColors(std::string const& str)
void AppenderConsole::SetColor(bool stdout_stream, ColorTypes color)
{
#if PLATFORM == PLATFORM_WINDOWS
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
static WORD WinColorFG[MaxColors] =
{
0, // BLACK
@@ -153,7 +153,7 @@ void AppenderConsole::SetColor(bool stdout_stream, ColorTypes color)
void AppenderConsole::ResetColor(bool stdout_stream)
{
#if PLATFORM == PLATFORM_WINDOWS
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
HANDLE hConsole = GetStdHandle(stdout_stream ? STD_OUTPUT_HANDLE : STD_ERROR_HANDLE);
SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED);
#else
+1 -1
View File
@@ -20,7 +20,7 @@
#include "StringFormat.h"
#include "Log.h"
#if PLATFORM == PLATFORM_WINDOWS
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
# include <Windows.h>
#endif
+1 -1
View File
@@ -166,7 +166,7 @@ inline bool Log::ShouldLog(std::string const& type, LogLevel level) const
} \
}
#if PLATFORM != PLATFORM_WINDOWS
#if TRINITY_PLATFORM != TRINITY_PLATFORM_WINDOWS
void check_args(const char*, ...) ATTR_PRINTF(1, 2);
void check_args(std::string const&, ...);
+235
View File
@@ -0,0 +1,235 @@
/*
* Copyright (C) 2008-2017 TrinityCore <http://www.trinitycore.org/>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "Metric.h"
#include "Log.h"
#include "Config.h"
#include "Util.h"
void Metric::Initialize(std::string const& realmName, boost::asio::io_service& ioService, std::function<void()> overallStatusLogger)
{
_realmName = FormatInfluxDBTagValue(realmName);
_batchTimer = Trinity::make_unique<boost::asio::deadline_timer>(ioService);
_overallStatusTimer = Trinity::make_unique<boost::asio::deadline_timer>(ioService);
_overallStatusLogger = overallStatusLogger;
LoadFromConfigs();
}
bool Metric::Connect()
{
_dataStream.connect(_hostname, _port);
auto error = _dataStream.error();
if (error)
{
TC_LOG_ERROR("metric", "Error connecting to '%s:%s', disabling Metric. Error message : %s",
_hostname.c_str(), _port.c_str(), error.message().c_str());
_enabled = false;
return false;
}
_dataStream.clear();
return true;
}
void Metric::LoadFromConfigs()
{
bool previousValue = _enabled;
_enabled = sConfigMgr->GetBoolDefault("Metric.Enable", false);
_updateInterval = sConfigMgr->GetIntDefault("Metric.Interval", 10);
if (_updateInterval < 1)
{
TC_LOG_ERROR("metric", "'Metric.Interval' config set to %d, overriding to 1.", _updateInterval);
_updateInterval = 1;
}
_overallStatusTimerInterval = sConfigMgr->GetIntDefault("Metric.OverallStatusInterval", 1);
if (_overallStatusTimerInterval < 1)
{
TC_LOG_ERROR("metric", "'Metric.OverallStatusInterval' config set to %d, overriding to 1.", _overallStatusTimerInterval);
_overallStatusTimerInterval = 1;
}
// Schedule a send at this point only if the config changed from Disabled to Enabled.
// Cancel any scheduled operation if the config changed from Enabled to Disabled.
if (_enabled && !previousValue)
{
std::string connectionInfo = sConfigMgr->GetStringDefault("Metric.ConnectionInfo", "");
if (connectionInfo.empty())
{
TC_LOG_ERROR("metric", "'Metric.ConnectionInfo' not specified in configuration file.");
return;
}
Tokenizer tokens(connectionInfo, ';');
if (tokens.size() != 3)
{
TC_LOG_ERROR("metric", "'Metric.ConnectionInfo' specified with wrong format in configuration file.");
return;
}
_hostname.assign(tokens[0]);
_port.assign(tokens[1]);
_databaseName.assign(tokens[2]);
Connect();
ScheduleSend();
ScheduleOverallStatusLog();
}
}
void Metric::Update()
{
if (_overallStatusTimerTriggered)
{
_overallStatusTimerTriggered = false;
_overallStatusLogger();
}
}
void Metric::LogEvent(std::string const& category, std::string const& title, std::string const& description)
{
using namespace std::chrono;
MetricData* data = new MetricData;
data->Category = category;
data->Timestamp = system_clock::now();
data->Type = METRIC_DATA_EVENT;
data->Title = title;
data->Text = description;
_queuedData.Enqueue(data);
}
void Metric::SendBatch()
{
using namespace std::chrono;
std::stringstream batchedData;
MetricData* data;
bool firstLoop = true;
while (_queuedData.Dequeue(data))
{
if (!firstLoop)
batchedData << "\n";
batchedData << data->Category;
if (!_realmName.empty())
batchedData << ",realm=" << _realmName;
batchedData << " ";
switch (data->Type)
{
case METRIC_DATA_VALUE:
batchedData << "value=" << data->Value;
break;
case METRIC_DATA_EVENT:
batchedData << "title=\"" << data->Title << "\",text=\"" << data->Text << "\"";
break;
}
batchedData << " ";
batchedData << std::to_string(duration_cast<nanoseconds>(data->Timestamp.time_since_epoch()).count());
firstLoop = false;
delete data;
}
// Check if there's any data to send
if (batchedData.tellp() == std::streampos(0))
{
ScheduleSend();
return;
}
if (!_dataStream.good() && !Connect())
return;
_dataStream << "POST " << "/write?db=" << _databaseName << " HTTP/1.1\r\n";
_dataStream << "Host: " << _hostname << ":" << _port << "\r\n";
_dataStream << "Accept: */*\r\n";
_dataStream << "Content-Type: application/octet-stream\r\n";
_dataStream << "Content-Transfer-Encoding: binary\r\n";
_dataStream << "Content-Length: " << std::to_string(batchedData.tellp()) << "\r\n\r\n";
_dataStream << batchedData.rdbuf();
std::string http_version;
_dataStream >> http_version;
unsigned int status_code = 0;
_dataStream >> status_code;
if (status_code != 204)
{
TC_LOG_ERROR("metric", "Error sending data, returned HTTP code: %u", status_code);
}
// Read and ignore the status description
std::string status_description;
std::getline(_dataStream, status_description);
// Read headers
std::string header;
while (std::getline(_dataStream, header) && header != "\r")
{
if (header == "Connection: close\r")
_dataStream.close();
}
ScheduleSend();
}
void Metric::ScheduleSend()
{
if (_enabled)
{
_batchTimer->expires_from_now(boost::posix_time::seconds(_updateInterval));
_batchTimer->async_wait(std::bind(&Metric::SendBatch, this));
}
else
{
_dataStream.close();
MetricData* data;
// Clear the queue
while (_queuedData.Dequeue(data))
;
}
}
void Metric::ForceSend()
{
// Send what's queued only if io_service is stopped (so only on shutdown)
if (_enabled && _batchTimer->get_io_service().stopped())
SendBatch();
}
void Metric::ScheduleOverallStatusLog()
{
if (_enabled)
{
_overallStatusTimer->expires_from_now(boost::posix_time::seconds(_overallStatusTimerInterval));
_overallStatusTimer->async_wait([this](const boost::system::error_code&)
{
_overallStatusTimerTriggered = true;
ScheduleOverallStatusLog();
});
}
}
Metric* Metric::instance()
{
static Metric instance;
return &instance;
}
+149
View File
@@ -0,0 +1,149 @@
/*
* Copyright (C) 2008-2017 TrinityCore <http://www.trinitycore.org/>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef METRIC_H__
#define METRIC_H__
#include "Common.h"
#include "Threading/MPSCQueue.h"
#include <boost/asio/ip/tcp.hpp>
#include <boost/algorithm/string.hpp>
#include <type_traits>
enum MetricDataType
{
METRIC_DATA_VALUE,
METRIC_DATA_EVENT
};
struct MetricData
{
std::string Category;
std::chrono::time_point<std::chrono::system_clock> Timestamp;
MetricDataType Type;
// LogValue-specific fields
std::string Value;
// LogEvent-specific fields
std::string Title;
std::string Text;
};
class TC_COMMON_API Metric
{
private:
boost::asio::ip::tcp::iostream _dataStream;
MPSCQueue<MetricData> _queuedData;
std::unique_ptr<boost::asio::deadline_timer> _batchTimer;
std::unique_ptr<boost::asio::deadline_timer> _overallStatusTimer;
int32 _updateInterval = 0;
int32 _overallStatusTimerInterval = 0;
bool _enabled = false;
bool _overallStatusTimerTriggered = false;
std::string _hostname;
std::string _port;
std::string _databaseName;
std::function<void()> _overallStatusLogger;
std::string _realmName;
bool Connect();
void SendBatch();
void ScheduleSend();
void ScheduleOverallStatusLog();
template<class T, typename std::enable_if<std::is_integral<T>::value>::type* = nullptr>
static std::string FormatInfluxDBValue(T value) { return std::to_string(value) + 'i'; }
static std::string FormatInfluxDBValue(std::string const& value)
{
return '"' + boost::replace_all_copy(value, "\"", "\\\"") + '"';
}
static std::string FormatInfluxDBValue(bool value) { return value ? "t" : "f"; }
static std::string FormatInfluxDBValue(const char* value) { return FormatInfluxDBValue(std::string(value)); }
static std::string FormatInfluxDBValue(double value) { return std::to_string(value); }
static std::string FormatInfluxDBValue(float value) { return FormatInfluxDBValue(double(value)); }
static std::string FormatInfluxDBTagValue(std::string const& value)
{
// ToDo: should handle '=' and ',' characters too
return boost::replace_all_copy(value, " ", "\\ ");
}
// ToDo: should format TagKey and FieldKey too in the same way as TagValue
public:
static Metric* instance();
void Initialize(std::string const& realmName, boost::asio::io_service& ioService, std::function<void()> overallStatusLogger = [](){});
void LoadFromConfigs();
void Update();
template<class T>
void LogValue(std::string const& category, T value)
{
using namespace std::chrono;
MetricData* data = new MetricData;
data->Category = category;
data->Timestamp = system_clock::now();
data->Type = METRIC_DATA_VALUE;
data->Value = FormatInfluxDBValue(value);
_queuedData.Enqueue(data);
}
void LogEvent(std::string const& category, std::string const& title, std::string const& description);
void ForceSend();
bool IsEnabled() const { return _enabled; }
};
#define sMetric Metric::instance()
#if TRINITY_PLATFORM != TRINITY_PLATFORM_WINDOWS
#define TC_METRIC_EVENT(category, title, description) \
do { \
if (sMetric->IsEnabled()) \
sMetric->LogEvent(category, title, description); \
} while (0)
#define TC_METRIC_VALUE(category, value) \
do { \
if (sMetric->IsEnabled()) \
sMetric->LogValue(category, value); \
} while (0)
#else
#define TC_METRIC_EVENT(category, title, description) \
__pragma(warning(push)) \
__pragma(warning(disable:4127)) \
do { \
if (sMetric->IsEnabled()) \
sMetric->LogEvent(category, title, description); \
} while (0) \
__pragma(warning(pop))
#define TC_METRIC_VALUE(category, value) \
__pragma(warning(push)) \
__pragma(warning(disable:4127)) \
do { \
if (sMetric->IsEnabled()) \
sMetric->LogValue(category, value); \
} while (0) \
__pragma(warning(pop))
#endif
#endif // METRIC_H__
+3 -5
View File
@@ -28,11 +28,6 @@
void SetProcessPriority(const std::string& logChannel)
{
// Suppresses Mac OS X Warning since logChannel isn't used.
#if PLATFORM_APPLE
(void)logChannel;
#endif
#if defined(_WIN32) || defined(__linux__)
///- Handle affinity for multiple processors and process priority
@@ -99,6 +94,9 @@ void SetProcessPriority(const std::string& logChannel)
}
#endif
#else
// Suppresses unused argument warning for all other platforms
(void)logChannel;
#endif
}
+4 -4
View File
@@ -24,7 +24,7 @@
#include <stdarg.h>
#include <boost/algorithm/string/case_conv.hpp>
#if COMPILER == COMPILER_GNU
#if TRINITY_COMPILER == TRINITY_COMPILER_GNU
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
@@ -421,7 +421,7 @@ std::wstring GetMainPartOfName(std::wstring const& wname, uint32 declension)
bool utf8ToConsole(const std::string& utf8str, std::string& conStr)
{
#if PLATFORM == PLATFORM_WINDOWS
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
std::wstring wstr;
if (!Utf8toWStr(utf8str, wstr))
return false;
@@ -438,7 +438,7 @@ bool utf8ToConsole(const std::string& utf8str, std::string& conStr)
bool consoleToUtf8(const std::string& conStr, std::string& utf8str)
{
#if PLATFORM == PLATFORM_WINDOWS
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
std::wstring wstr;
wstr.resize(conStr.size());
OemToCharBuffW(&conStr[0], &wstr[0], uint32(conStr.size()));
@@ -477,7 +477,7 @@ void utf8printf(FILE* out, const char *str, ...)
void vutf8printf(FILE* out, const char *str, va_list* ap)
{
#if PLATFORM == PLATFORM_WINDOWS
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
char temp_buf[32 * 1024];
wchar_t wtemp_buf[32 * 1024];
+6 -6
View File
@@ -49,7 +49,7 @@ namespace fs = boost::filesystem;
# define _TRINITY_REALM_CONFIG "authserver.conf"
#endif
#if PLATFORM == PLATFORM_WINDOWS
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
#include "ServiceWin32.h"
char serviceName[] = "authserver";
char serviceLongName[] = "TrinityCore auth service";
@@ -90,7 +90,7 @@ int main(int argc, char** argv)
if (vm.count("help") || vm.count("version"))
return 0;
#if PLATFORM == PLATFORM_WINDOWS
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
if (configService.compare("install") == 0)
return WinServiceInstall() == true ? 0 : 1;
else if (configService.compare("uninstall") == 0)
@@ -163,7 +163,7 @@ int main(int argc, char** argv)
// Set signal handlers
boost::asio::signal_set signals(*_ioService, SIGINT, SIGTERM);
#if PLATFORM == PLATFORM_WINDOWS
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
signals.add(SIGBREAK);
#endif
signals.async_wait(SignalHandler);
@@ -182,7 +182,7 @@ int main(int argc, char** argv)
_banExpiryCheckTimer->expires_from_now(boost::posix_time::seconds(_banExpiryCheckInterval));
_banExpiryCheckTimer->async_wait(BanExpiryHandler);
#if PLATFORM == PLATFORM_WINDOWS
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
if (m_ServiceStatus != -1)
{
_serviceStatusWatchTimer = new boost::asio::deadline_timer(*_ioService);
@@ -271,7 +271,7 @@ void BanExpiryHandler(boost::system::error_code const& error)
}
}
#if PLATFORM == PLATFORM_WINDOWS
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
void ServiceStatusWatcher(boost::system::error_code const& error)
{
if (!error)
@@ -299,7 +299,7 @@ variables_map GetConsoleArguments(int argc, char** argv, fs::path& configFile, s
("config,c", value<fs::path>(&configFile)->default_value(fs::absolute(_TRINITY_REALM_CONFIG)),
"use <arg> as configuration file")
;
#if PLATFORM == PLATFORM_WINDOWS
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
options_description win("Windows platform specific options");
win.add_options()
("service,s", value<std::string>(&configService)->default_value(""), "Windows service options: [install | uninstall]")
+2 -2
View File
@@ -53,7 +53,7 @@ namespace fs = boost::filesystem;
# define _TRINITY_BNET_CONFIG "bnetserver.conf"
#endif
#if PLATFORM == PLATFORM_WINDOWS
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
#include "ServiceWin32.h"
char serviceName[] = "bnetserver";
char serviceLongName[] = "TrinityCore bnet service";
@@ -147,7 +147,7 @@ int main(int argc, char** argv)
// Set signal handlers
boost::asio::signal_set signals(_ioService, SIGINT, SIGTERM);
#if PLATFORM == PLATFORM_WINDOWS
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
signals.add(SIGBREAK);
#endif
signals.async_wait(SignalHandler);
@@ -52,7 +52,7 @@ BfWGCoordGY const WGGraveYard[BATTLEFIELD_WG_GRAVEYARD_MAX] =
};
uint32 const ClockWorldState[] = { 3781, 4354 };
uint32 const WintergraspFaction[] = { 1732, 1735, 35 };
uint32 const WintergraspFaction[] = { FACTION_ALLIANCE_GENERIC_WG, FACTION_HORDE_GENERIC_WG, FACTION_FRIENDLY };
Position const WintergraspStalkerPos = { 4948.985f, 2937.789f, 550.5172f, 1.815142f };
@@ -399,7 +399,7 @@ void BattlegroundAB::_NodeOccupied(uint8 node, Team team)
//aura should only apply to players who have accupied the node, set correct faction for trigger
if (trigger)
{
trigger->SetFaction(team == ALLIANCE ? 84 : 83);
trigger->SetFaction(team == ALLIANCE ? FACTION_ALLIANCE_GENERIC : FACTION_HORDE_GENERIC);
trigger->CastSpell(trigger, SPELL_HONORABLE_DEFENDER_25Y, false);
}
}
@@ -752,7 +752,7 @@ void BattlegroundAV::PopulateNode(BG_AV_Nodes node)
DelCreature(node + 302);
return;
}
trigger->SetFaction(owner == ALLIANCE ? 84 : 83);
trigger->SetFaction(owner == ALLIANCE ? FACTION_ALLIANCE_GENERIC : FACTION_HORDE_GENERIC);
trigger->CastSpell(trigger, SPELL_HONORABLE_DEFENDER_25Y, false);
}
}
@@ -783,7 +783,7 @@ void BattlegroundEY::EventTeamCapturedPoint(Player* player, uint32 Point)
//aura should only apply to players who have accupied the node, set correct faction for trigger
if (trigger)
{
trigger->SetFaction(Team == ALLIANCE ? 84 : 83);
trigger->SetFaction(Team == ALLIANCE ? FACTION_ALLIANCE_GENERIC : FACTION_HORDE_GENERIC);
trigger->CastSpell(trigger, SPELL_HONORABLE_DEFENDER_25Y, false);
}
}
@@ -1888,7 +1888,7 @@ void GameObject::CastSpell(Unit* target, uint32 spellId, TriggerCastFlags trigge
}
else
{
trigger->SetFaction(spellInfo->IsPositive() ? 35 : 14);
trigger->SetFaction(spellInfo->IsPositive() ? FACTION_FRIENDLY : FACTION_MONSTER);
// Set owner guid for target if no owner available - needed by trigger auras
// - trigger gets despawned and there's no caster avalible (see AuraEffect::TriggerSpell())
trigger->CastSpell(target ? target : trigger, spellInfo, triggered, nullptr, nullptr, target ? target->GetGUID() : ObjectGuid::Empty);
+26 -23
View File
@@ -2559,8 +2559,8 @@ Creature* Player::GetNPCIfCanInteractWith(ObjectGuid const& guid, uint32 npcflag
if (creature->GetReactionTo(this) <= REP_UNFRIENDLY)
return nullptr;
// not too far
if (!creature->IsWithinDistInMap(this, INTERACTION_DISTANCE))
// not too far, taken from CGGameUI::SetInteractTarget
if (!creature->IsWithinDistInMap(this, creature->GetCombatReach() + 4.0f))
return nullptr;
return creature;
@@ -2568,33 +2568,36 @@ Creature* Player::GetNPCIfCanInteractWith(ObjectGuid const& guid, uint32 npcflag
GameObject* Player::GetGameObjectIfCanInteractWith(ObjectGuid const& guid) const
{
if (GameObject* go = GetMap()->GetGameObject(guid))
{
if (go->IsWithinDistInMap(this, go->GetInteractionDistance()))
return go;
if (!guid)
return nullptr;
TC_LOG_DEBUG("maps", "GetGameObjectIfCanInteractWith: GameObject '%s' [GUID: %u] is too far away from player %s [GUID: %u] to be used by him (distance=%f, maximal %f is allowed)", go->GetGOInfo()->name.c_str(),
go->GetGUID().GetCounter(), GetName().c_str(), GetGUID().GetCounter(), go->GetDistance(this), go->GetInteractionDistance());
}
if (!IsInWorld())
return nullptr;
return nullptr;
if (IsInFlight())
return nullptr;
// exist
GameObject* go = ObjectAccessor::GetGameObject(*this, guid);
if (!go)
return nullptr;
if (!go->IsWithinDistInMap(this, go->GetInteractionDistance()))
return nullptr;
return go;
}
GameObject* Player::GetGameObjectIfCanInteractWith(ObjectGuid const& guid, GameobjectTypes type) const
{
if (GameObject* go = GetMap()->GetGameObject(guid))
{
if (go->GetGoType() == type)
{
if (go->IsWithinDistInMap(this, go->GetInteractionDistance()))
return go;
GameObject* go = GetGameObjectIfCanInteractWith(guid);
if (!go)
return nullptr;
TC_LOG_DEBUG("maps", "Player::GetGameObjectIfCanInteractWith: GameObject '%s' (%s) is too far away from player '%s' (%s) to be used by him (Distance: %f, maximal 10 is allowed)",
go->GetGOInfo()->name.c_str(), go->GetGUID().ToString().c_str(), GetName().c_str(), GetGUID().ToString().c_str(), go->GetDistance(this));
}
}
if (go->GetGoType() != type)
return nullptr;
return nullptr;
return go;
}
bool Player::IsUnderWater() const
@@ -2648,13 +2651,13 @@ void Player::SetGameMaster(bool on)
if (on)
{
m_ExtraFlags |= PLAYER_EXTRA_GM_ON;
SetFaction(35);
SetFaction(FACTION_FRIENDLY);
SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_GM);
SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_ALLOW_CHEAT_SPELLS);
if (Pet* pet = GetPet())
{
pet->SetFaction(35);
pet->SetFaction(FACTION_FRIENDLY);
pet->getHostileRefManager().setOnlineOfflineState(false);
}
@@ -49,6 +49,7 @@
#include "World.h"
#include "WorldPacket.h"
#include "WorldSession.h"
#include "Metric.h"
#include "BattlenetServerManager.h"
class LoginQueryHolder : public SQLQueryHolder
@@ -1048,6 +1049,8 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder* holder)
sScriptMgr->OnPlayerLogin(pCurrChar, firstLogin);
TC_METRIC_EVENT("player_events", "Login", pCurrChar->GetName());
sBattlenetServer.SendChangeToonOnlineState(GetBattlenetAccountId(), GetAccountId(), _player->GetGUID(), _player->GetName(), true);
delete holder;
@@ -158,6 +158,51 @@ enum ReputationRank
REP_EXALTED = 7
};
enum FactionTemplates
{
FACTION_NONE = 0,
FACTION_CREATURE = 7,
FACTION_ESCORTEE_A_NEUTRAL_PASSIVE = 10,
FACTION_MONSTER = 14,
FACTION_MONSTER_2 = 16,
FACTION_TROLL_BLOODSCALP = 28,
FACTION_PREY = 31,
FACTION_ESCORTEE_H_NEUTRAL_PASSIVE = 33,
FACTION_FRIENDLY = 35,
FACTION_OGRE = 45,
FACTION_ORC_DRAGONMAW = 62,
FACTION_HORDE_GENERIC = 83,
FACTION_ALLIANCE_GENERIC = 84,
FACTION_DEMON = 90,
FACTION_ELEMENTAL = 91,
FACTION_DRAGONFLIGHT_BLACK = 103,
FACTION_ESCORTEE_N_NEUTRAL_PASSIVE = 113,
FACTION_ENEMY = 168,
FACTION_ESCORTEE_A_NEUTRAL_ACTIVE = 231,
FACTION_ESCORTEE_H_NEUTRAL_ACTIVE = 232,
FACTION_ESCORTEE_N_NEUTRAL_ACTIVE = 250,
FACTION_ESCORTEE_N_FRIEND_PASSIVE = 290,
FACTION_TITAN = 415,
FACTION_ESCORTEE_N_FRIEND_ACTIVE = 495,
FACTION_GOBLIN_DARK_IRON_BAR_PATRON = 736,
FACTION_DARK_IRON_DWARVES = 754,
FACTION_ESCORTEE_A_PASSIVE = 774,
FACTION_ESCORTEE_H_PASSIVE = 775,
FACTION_UNDEAD_SCOURGE = 974,
FACTION_EARTHEN_RING = 1726,
FACTION_ALLIANCE_GENERIC_WG = 1732,
FACTION_HORDE_GENERIC_WG = 1735,
FACTION_ARAKKOA = 1738,
FACTION_ASHTONGUE_DEATHSWORN = 1820,
FACTION_FLAYER_HUNTER = 1840,
FACTION_MONSTER_SPAR_BUDDY = 1868,
FACTION_ESCORTEE_N_ACTIVE = 1986,
FACTION_ESCORTEE_H_ACTIVE = 2046,
FACTION_UNDEAD_SCOURGE_2 = 2068,
FACTION_UNDEAD_SCOURGE_3 = 2084,
FACTION_SCARLET_CRUSADE = 2089
};
#define MIN_REPUTATION_RANK (REP_HATED)
#define MAX_REPUTATION_RANK 8
@@ -26,6 +26,7 @@
#include "DisableMgr.h"
#include "DetourCommon.h"
#include "DetourNavMeshQuery.h"
#include "Metric.h"
////////////////// PathGenerator //////////////////
PathGenerator::PathGenerator(const Unit* owner) :
@@ -62,6 +63,8 @@ bool PathGenerator::CalculatePath(float destX, float destY, float destZ, bool fo
if (!Trinity::IsValidMapCoord(destX, destY, destZ) || !Trinity::IsValidMapCoord(x, y, z))
return false;
TC_METRIC_EVENT("mmap_events", "CalculatePath", "");
G3D::Vector3 dest(destX, destY, destZ);
SetEndPosition(dest);
+4 -10
View File
@@ -34,37 +34,32 @@ uint32 ActivePoolData::GetActiveObjectCount(uint32 pool_id) const
// Method that tell if a creature is spawned currently
template<>
bool ActivePoolData::IsActiveObject<Creature>(uint32 db_guid) const
TC_GAME_API bool ActivePoolData::IsActiveObject<Creature>(uint32 db_guid) const
{
return mSpawnedCreatures.find(db_guid) != mSpawnedCreatures.end();
}
// Method that tell if a gameobject is spawned currently
template<>
bool ActivePoolData::IsActiveObject<GameObject>(uint32 db_guid) const
TC_GAME_API bool ActivePoolData::IsActiveObject<GameObject>(uint32 db_guid) const
{
return mSpawnedGameobjects.find(db_guid) != mSpawnedGameobjects.end();
}
// Method that tell if a pool is spawned currently
template<>
bool ActivePoolData::IsActiveObject<Pool>(uint32 sub_pool_id) const
TC_GAME_API bool ActivePoolData::IsActiveObject<Pool>(uint32 sub_pool_id) const
{
return mSpawnedPools.find(sub_pool_id) != mSpawnedPools.end();
}
// Method that tell if a quest can be started
template<>
bool ActivePoolData::IsActiveObject<Quest>(uint32 quest_id) const
TC_GAME_API bool ActivePoolData::IsActiveObject<Quest>(uint32 quest_id) const
{
return mActiveQuests.find(quest_id) != mActiveQuests.end();
}
template TC_GAME_API bool ActivePoolData::IsActiveObject<Creature>(uint32) const;
template TC_GAME_API bool ActivePoolData::IsActiveObject<GameObject>(uint32) const;
template TC_GAME_API bool ActivePoolData::IsActiveObject<Pool>(uint32) const;
template TC_GAME_API bool ActivePoolData::IsActiveObject<Quest>(uint32) const;
template<>
void ActivePoolData::ActivateObject<Creature>(uint32 db_guid, uint32 pool_id)
{
@@ -958,7 +953,6 @@ void PoolMgr::LoadFromDB()
void PoolMgr::LoadQuestPools()
{
}
void PoolMgr::SaveQuestsToDB()
+16 -31
View File
@@ -64,15 +64,10 @@ ScriptReloadMgr* ScriptReloadMgr::instance()
namespace fs = boost::filesystem;
#ifdef _WIN32
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
#include <windows.h>
#define HOTSWAP_PLATFORM_REQUIRES_CACHING
#elif __APPLE__
#else // Posix and Apple
#include <dlfcn.h>
#define HOTSWAP_PLATFORM_REQUIRES_CACHING
#else // Posix
#include <dlfcn.h>
// #define HOTSWAP_PLATFORM_REQUIRES_CACHING
#endif
// Promote the sScriptReloadMgr to a HotSwapScriptReloadMgr
@@ -83,7 +78,7 @@ namespace fs = boost::filesystem;
// Returns "" on Windows and "lib" on posix.
static char const* GetSharedLibraryPrefix()
{
#ifdef _WIN32
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
return "";
#else // Posix
return "lib";
@@ -93,16 +88,16 @@ static char const* GetSharedLibraryPrefix()
// Returns "dll" on Windows, "dylib" on OS X, and "so" on posix.
static char const* GetSharedLibraryExtension()
{
#ifdef _WIN32
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
return "dll";
#elif __APPLE__
#elif TRINITY_PLATFORM == TRINITY_PLATFORM_APPLE
return "dylib";
#else // Posix
return "so";
#endif
}
#ifdef _WIN32
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
typedef HMODULE HandleType;
#else // Posix
typedef void* HandleType;
@@ -131,7 +126,7 @@ public:
void operator() (HandleType handle) const
{
// Unload the associated shared library.
#ifdef _WIN32
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
bool success = (FreeLibrary(handle) != 0);
#else // Posix
bool success = (dlclose(handle) == 0);
@@ -241,7 +236,7 @@ private:
template<typename Fn>
static bool GetFunctionFromSharedLibrary(HandleType handle, std::string const& name, Fn& fn)
{
#ifdef _WIN32
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
fn = reinterpret_cast<Fn>(GetProcAddress(handle, name.c_str()));
#else // Posix
fn = reinterpret_cast<Fn>(dlsym(handle, name.c_str()));
@@ -260,7 +255,7 @@ Optional<std::shared_ptr<ScriptModule>>
return path;
}();
#ifdef _WIN32
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
HandleType handle = LoadLibrary(load_path.generic_string().c_str());
#else // Posix
HandleType handle = dlopen(load_path.generic_string().c_str(), RTLD_LAZY);
@@ -404,7 +399,7 @@ static std::string CalculateScriptModuleProjectName(std::string const& module)
/// could block the rebuild of new shared libraries.
static bool IsDebuggerBlockingRebuild()
{
#ifdef _WIN32
#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
if (IsDebuggerPresent())
return true;
#endif
@@ -609,8 +604,6 @@ public:
}
}
#ifdef HOTSWAP_PLATFORM_REQUIRES_CACHING
temporary_cache_path_ = CalculateTemporaryCachePath();
// We use the boost filesystem function versions which accept
@@ -629,8 +622,6 @@ public:
// Used to silent compiler warnings
(void)code;
#endif // #ifdef HOTSWAP_PLATFORM_REQUIRES_CACHING
// Correct the CMake prefix when needed
if (sWorld->getBoolConfig(CONFIG_HOTSWAP_PREFIX_CORRECTION_ENABLED))
DoCMakePrefixCorrectionIfNeeded();
@@ -867,21 +858,17 @@ private:
ASSERT(_running_script_module_names.find(path) == _running_script_module_names.end(),
"Can't load a module which is running already!");
Optional<fs::path> cache_path;
#ifdef HOTSWAP_PLATFORM_REQUIRES_CACHING
// Copy the shared library into a cache on platforms which lock files on use (windows).
cache_path = GenerateUniquePathForLibraryInCache(path);
// Copy the shared library into a cache
auto cache_path = GenerateUniquePathForLibraryInCache(path);
{
boost::system::error_code code;
fs::copy_file(path, *cache_path, fs::copy_option::fail_if_exists, code);
fs::copy_file(path, cache_path, fs::copy_option::fail_if_exists, code);
if (code)
{
TC_LOG_FATAL("scripts.hotswap", ">> Failed to create cache entry for module "
"\"%s\" at \"%s\" with reason (\"%s\")!",
path.filename().generic_string().c_str(), cache_path->generic_string().c_str(),
path.filename().generic_string().c_str(), cache_path.generic_string().c_str(),
code.message().c_str());
// Find a better solution for this but it's much better
@@ -892,11 +879,9 @@ private:
}
TC_LOG_TRACE("scripts.hotswap", ">> Copied the shared library \"%s\" to \"%s\" for caching.",
path.filename().generic_string().c_str(), cache_path->generic_string().c_str());
path.filename().generic_string().c_str(), cache_path.generic_string().c_str());
}
#endif // #ifdef HOTSWAP_PLATFORM_REQUIRES_CACHING
auto module = ScriptModule::CreateFromPath(path, cache_path);
if (!module)
{
@@ -1344,7 +1329,7 @@ private:
auto current_path = fs::current_path();
#ifndef _WIN32
#if TRINITY_PLATFORM != TRINITY_PLATFORM_WINDOWS
// The worldserver location is ${CMAKE_INSTALL_PREFIX}/bin
// on all other platforms then windows
current_path = current_path.parent_path();
-24
View File
@@ -12,30 +12,6 @@ class Creature;
#define TEXT_SOURCE_RANGE -1000000 //the amount of entries each text source has available
/// @todo find better namings and definitions.
//N=Neutral, A=Alliance, H=Horde.
//NEUTRAL or FRIEND = Hostility to player surroundings (not a good definition)
//ACTIVE or PASSIVE = Hostility to environment surroundings.
enum eEscortFaction
{
FACTION_ESCORT_A_NEUTRAL_PASSIVE = 10,
FACTION_ESCORT_H_NEUTRAL_PASSIVE = 33,
FACTION_ESCORT_N_NEUTRAL_PASSIVE = 113,
FACTION_ESCORT_A_NEUTRAL_ACTIVE = 231,
FACTION_ESCORT_H_NEUTRAL_ACTIVE = 232,
FACTION_ESCORT_N_NEUTRAL_ACTIVE = 250,
FACTION_ESCORT_N_FRIEND_PASSIVE = 290,
FACTION_ESCORT_N_FRIEND_ACTIVE = 495,
FACTION_ESCORT_A_PASSIVE = 774,
FACTION_ESCORT_H_PASSIVE = 775,
FACTION_ESCORT_N_ACTIVE = 1986,
FACTION_ESCORT_H_ACTIVE = 2046
};
struct ScriptPointMove
{
uint32 uiCreatureEntry;
+5
View File
@@ -47,6 +47,7 @@
#include "WardenWin.h"
#include "WardenMac.h"
#include "WardenMac.h"
#include "Metric.h"
#include "BattlenetServerManager.h"
#include <zlib.h>
@@ -422,6 +423,8 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater)
break;
}
TC_METRIC_VALUE("processed_packets", processedPackets);
_recvQueue.readd(requeuePackets.begin(), requeuePackets.end());
if (m_Socket && m_Socket->IsOpen() && _warden)
@@ -578,6 +581,8 @@ void WorldSession::LogoutPlayer(bool save)
//! Call script hook before deletion
sScriptMgr->OnPlayerLogout(_player);
TC_METRIC_EVENT("player_events", "Logout", _player->GetName());
//! Remove the player from the world
// the player may not be in the world when logging out
// e.g if he got disconnected during a transfer to another map
+8
View File
@@ -788,6 +788,14 @@ void Spell::SelectSpellTargets()
if (m_spellInfo->IsChanneled())
{
// maybe do this for all spells?
if (m_UniqueTargetInfo.empty() && m_UniqueGOTargetInfo.empty() && m_UniqueItemInfo.empty() && !m_targets.HasDst())
{
SendCastResult(SPELL_FAILED_BAD_IMPLICIT_TARGETS);
finish(false);
return;
}
uint8 mask = (1 << i);
for (std::list<TargetInfo>::iterator ihit = m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
{
File diff suppressed because it is too large. Load diff
+12 -9
View File
@@ -58,16 +58,18 @@ enum DumpReturn
DUMP_SUCCESS,
DUMP_FILE_OPEN_ERROR,
DUMP_TOO_MANY_CHARS,
DUMP_UNEXPECTED_END,
DUMP_FILE_BROKEN,
DUMP_CHARACTER_DELETED
};
struct DumpTable;
struct TableStruct;
class StringTransaction;
class TC_GAME_API PlayerDump
{
public:
typedef std::set<ObjectGuid::LowType> DumpGuidSet;
typedef std::map<ObjectGuid::LowType, ObjectGuid::LowType> DumpGuidMap;
static void InitializeTables();
protected:
PlayerDump() { }
@@ -82,13 +84,14 @@ class TC_GAME_API PlayerDumpWriter : public PlayerDump
DumpReturn WriteDump(std::string const& file, ObjectGuid::LowType guid);
private:
bool DumpTable(std::string& dump, ObjectGuid::LowType guid, char const* tableFrom, char const* tableTo, DumpTableType type);
std::string GenerateWhereStr(char const* field, DumpGuidSet const& guids, DumpGuidSet::const_iterator& itr);
std::string GenerateWhereStr(char const* field, ObjectGuid::LowType guid);
bool AppendTable(StringTransaction& trans, ObjectGuid::LowType guid, TableStruct const& tableStruct, DumpTable const& dumpTable);
void PopulateGuids(ObjectGuid::LowType guid);
DumpGuidSet pets;
DumpGuidSet mails;
DumpGuidSet items;
std::set<ObjectGuid::LowType> _pets;
std::set<ObjectGuid::LowType> _mails;
std::set<ObjectGuid::LowType> _items;
std::set<uint64> _itemSets;
};
class TC_GAME_API PlayerDumpReader : public PlayerDump
+13 -1
View File
@@ -52,12 +52,14 @@
#include "ObjectMgr.h"
#include "OutdoorPvPMgr.h"
#include "Player.h"
#include "PlayerDump.h"
#include "PoolMgr.h"
#include "QueryCallback.h"
#include "ScriptMgr.h"
#include "ScriptReloadMgr.h"
#include "SkillDiscovery.h"
#include "SkillExtraItems.h"
#include "Metric.h"
#include "SmartAI.h"
#include "TicketMgr.h"
#include "TransportMgr.h"
@@ -396,6 +398,7 @@ void World::LoadConfigSettings(bool reload)
return;
}
sLog->LoadFromConfig();
sMetric->LoadFromConfigs();
}
m_defaultDbcLocale = LocaleConstant(sConfigMgr->GetIntDefault("DBC.Locale", 0));
@@ -1225,7 +1228,7 @@ void World::LoadConfigSettings(bool reload)
if (dataPath.empty() || (dataPath.at(dataPath.length()-1) != '/' && dataPath.at(dataPath.length()-1) != '\\'))
dataPath.push_back('/');
#if PLATFORM == PLATFORM_UNIX || PLATFORM == PLATFORM_APPLE
#if TRINITY_PLATFORM == TRINITY_PLATFORM_UNIX || TRINITY_PLATFORM == TRINITY_PLATFORM_APPLE
if (dataPath[0] == '~')
{
const char* home = getenv("HOME");
@@ -1494,6 +1497,9 @@ void World::SetInitialWorldSettings()
MMAP::MMapManager* mmmgr = MMAP::MMapFactory::createOrGetMMapManager();
mmmgr->InitializeThreadUnsafe(mapData);
TC_LOG_INFO("server.loading", "Initializing PlayerDump tables...");
PlayerDump::InitializeTables();
TC_LOG_INFO("server.loading", "Loading SpellInfo store...");
sSpellMgr->LoadSpellInfoStore();
@@ -2065,6 +2071,8 @@ void World::SetInitialWorldSettings()
TC_LOG_INFO("server.worldserver", "World initialized in %u minutes %u seconds", (startupDuration / 60000), ((startupDuration % 60000) / 1000));
TC_METRIC_EVENT("events", "World initialized", "World initialized in " + std::to_string(startupDuration / 60000) + " minutes " + std::to_string((startupDuration % 60000) / 1000) + " seconds");
if (uint32 realmId = sConfigMgr->GetIntDefault("RealmID", 0)) // 0 reserved for auth
sLog->SetRealmId(realmId);
}
@@ -2317,6 +2325,10 @@ void World::Update(uint32 diff)
ProcessCliCommands();
sScriptMgr->OnWorldUpdate(diff);
// Stats logger update
sMetric->Update();
TC_METRIC_VALUE("update_time_diff", diff);
}
void World::ForceGameEventUpdate()
@@ -595,7 +595,7 @@ public:
//spell by trap has effect61, this indicate the bar go hostile
if (Unit* tmp = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_PHALANX)))
tmp->SetFaction(14);
tmp->SetFaction(FACTION_MONSTER);
//for later, this event(s) has alot more to it.
//optionally, DONE can trigger bar to go hostile.
@@ -95,8 +95,6 @@ enum DirebrewEvents
enum DirebrewMisc
{
COREN_DIREBREW_FACTION_HOSTILE = 736,
COREN_DIREBREW_FACTION_FRIEND = 35,
GOSSIP_ID = 11388,
GO_MOLE_MACHINE_TRAP = 188509,
GOSSIP_OPTION_FIGHT = 0,
@@ -139,7 +137,7 @@ public:
{
_Reset();
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
me->SetFaction(COREN_DIREBREW_FACTION_FRIEND);
me->SetFaction(FACTION_FRIENDLY);
events.SetPhase(PHASE_ALL);
for (uint8 i = 0; i < MAX_ANTAGONISTS; ++i)
@@ -162,7 +160,7 @@ public:
{
events.SetPhase(PHASE_ONE);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
me->SetFaction(COREN_DIREBREW_FACTION_HOSTILE);
me->SetFaction(FACTION_GOBLIN_DARK_IRON_BAR_PATRON);
me->SetInCombatWithZone();
EntryCheckPredicate pred(NPC_ANTAGONIST);
@@ -353,7 +351,7 @@ public:
void Reset() override
{
me->SetFaction(COREN_DIREBREW_FACTION_HOSTILE);
me->SetFaction(FACTION_GOBLIN_DARK_IRON_BAR_PATRON);
DoCastAOE(SPELL_MOLE_MACHINE_EMERGE, true);
me->SetInCombatWithZone();
}
@@ -395,7 +393,7 @@ public:
break;
case ACTION_ANTAGONIST_HOSTILE:
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
me->SetFaction(COREN_DIREBREW_FACTION_HOSTILE);
me->SetFaction(FACTION_GOBLIN_DARK_IRON_BAR_PATRON);
me->SetInCombatWithZone();
break;
default:
@@ -73,7 +73,7 @@ class boss_emperor_dagran_thaurissan : public CreatureScript
if (Creature* moira = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_MOIRA)))
{
moira->AI()->EnterEvadeMode();
moira->SetFaction(35);
moira->SetFaction(FACTION_FRIENDLY);
}
}
@@ -134,7 +134,7 @@ class boss_doomrel : public CreatureScript
case GOSSIP_ACTION_INFO_DEF+2:
CloseGossipMenuFor(player);
//start event here
creature->SetFaction(FACTION_HOSTILE);
creature->SetFaction(FACTION_DARK_IRON_DWARVES);
creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
creature->AI()->AttackStart(player);
InstanceScript* instance = creature->GetInstanceScript();
@@ -170,7 +170,7 @@ class boss_doomrel : public CreatureScript
{
Initialize();
me->SetFaction(FACTION_FRIEND);
me->SetFaction(FACTION_FRIENDLY);
// was set before event start, so set again
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
@@ -351,7 +351,7 @@ public:
{
if (Creature* boss = instance->GetCreature(TombBossGUIDs[TombEventCounter]))
{
boss->SetFaction(FACTION_HOSTILE);
boss->SetFaction(FACTION_DARK_IRON_DWARVES);
boss->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
if (Unit* target = boss->SelectNearestTarget(500))
boss->AI()->AttackStart(target);
@@ -377,7 +377,7 @@ public:
boss->GetMotionMaster()->MoveTargetedHome();
boss->SetLootRecipient(NULL);
}
boss->SetFaction(FACTION_FRIEND);
boss->SetFaction(FACTION_FRIENDLY);
}
}
GhostKillCount = 0;
@@ -187,7 +187,7 @@ public:
me->SetVisible(true);
me->SetUInt32Value(UNIT_NPC_FLAGS, 1);
me->SetFaction(35);
me->SetFaction(FACTION_FRIENDLY);
me->SetStandState(UNIT_STAND_STATE_SIT_HIGH_CHAIR);
me->RemoveAura(SPELL_NEFARIANS_BARRIER);
}
@@ -204,7 +204,7 @@ public:
Talk(SAY_GAMESBEGIN_2);
me->SetFaction(103);
me->SetFaction(FACTION_DRAGONFLIGHT_BLACK);
me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE);
DoCast(me, SPELL_NEFARIANS_BARRIER);
me->SetStandState(UNIT_STAND_STATE_STAND);
@@ -339,7 +339,7 @@ public:
CreatureID = Entry[urand(0, 4)];
if (Creature* dragon = me->SummonCreature(CreatureID, DrakeSpawnLoc[i]))
{
dragon->SetFaction(103);
dragon->SetFaction(FACTION_DRAGONFLIGHT_BLACK);
dragon->AI()->AttackStart(me->GetVictim());
}
@@ -75,7 +75,7 @@ public:
{
Initialize();
creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
creature->SetFaction(35);
creature->SetFaction(FACTION_FRIENDLY);
creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
}
@@ -153,7 +153,7 @@ public:
events.ScheduleEvent(EVENT_SPEECH_4, 16000);
break;
case EVENT_SPEECH_4:
me->SetFaction(103);
me->SetFaction(FACTION_DRAGONFLIGHT_BLACK);
if (Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID))
AttackStart(player);
break;
@@ -55,7 +55,6 @@ enum Spells
enum Extras
{
OPTION_ID_YOU_CHALLENGED_US = 0,
FACTION_FRIENDLY = 35,
MENU_OPTION_YOU_CHALLENGED_US = 4108
};
@@ -173,7 +173,7 @@ class boss_ragnaros : public CreatureScript
{
//Become unbanished again
me->SetReactState(REACT_AGGRESSIVE);
me->SetFaction(14);
me->SetFaction(FACTION_MONSTER);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, 0);
me->HandleEmoteCommand(EMOTE_ONESHOT_EMERGE);
@@ -251,7 +251,7 @@ class boss_ragnaros : public CreatureScript
me->InterruptNonMeleeSpells(false);
//Root self
//DoCast(me, 23973);
me->SetFaction(35);
me->SetFaction(FACTION_FRIENDLY);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_SUBMERGED);
me->HandleEmoteCommand(EMOTE_ONESHOT_SUBMERGE);
@@ -1378,7 +1378,7 @@ void boss_julianne::boss_julianneAI::UpdateAI(uint32 diff)
{
Talk(SAY_JULIANNE_AGGRO);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
me->SetFaction(16);
me->SetFaction(FACTION_MONSTER_2);
AggroYellTimer = 0;
} else AggroYellTimer -= diff;
}
@@ -1406,7 +1406,7 @@ void boss_julianne::boss_julianneAI::UpdateAI(uint32 diff)
ENSURE_AI(boss_romulo::boss_romuloAI, pRomulo->AI())->Phase = PHASE_ROMULO;
DoZoneInCombat(pRomulo);
pRomulo->SetFaction(16);
pRomulo->SetFaction(FACTION_MONSTER_2);
}
SummonedRomulo = true;
} else SummonRomuloTimer -= diff;
@@ -460,7 +460,7 @@ public:
Initialize();
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetFaction(14);
me->SetFaction(FACTION_MONSTER);
DoCast(me, SPELL_FLAMESTRIKE2, true);
}
@@ -666,7 +666,7 @@ public:
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetDisableGravity(true);
me->SetFaction(14);
me->SetFaction(FACTION_MONSTER);
DoCast(me, SPELL_ARCANE_SPHERE_PASSIVE, true);
}
@@ -125,7 +125,7 @@ public:
{
Initialize();
events.Reset();
me->SetFaction(7);
me->SetFaction(FACTION_CREATURE);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
me->SetStandState(UNIT_STAND_STATE_KNEEL);
me->LoadEquipment(0, true);
@@ -231,7 +231,7 @@ public:
wait_timer -= diff;
else
{
me->SetFaction(14);
me->SetFaction(FACTION_MONSTER);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
phase = PHASE_ATTACKING;
@@ -465,8 +465,7 @@ enum Says_VBM
enum Misc_VBN
{
QUEST_DEATH_CHALLENGE = 12733,
FACTION_HOSTILE = 2068
QUEST_DEATH_CHALLENGE = 12733
};
class npc_death_knight_initiate : public CreatureScript
@@ -585,7 +584,7 @@ public:
{
if (m_uiDuelTimer <= uiDiff)
{
me->SetFaction(FACTION_HOSTILE);
me->SetFaction(FACTION_UNDEAD_SCOURGE_2);
if (Unit* unit = ObjectAccessor::GetUnit(*me, m_uiDuelerGUID))
AttackStart(unit);
@@ -771,7 +770,7 @@ public:
{
charmer->RemoveAurasDueToSpell(SPELL_EFFECT_STOLEN_HORSE);
caster->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK);
caster->SetFaction(35);
caster->SetFaction(FACTION_FRIENDLY);
DoCast(caster, SPELL_CALL_DARK_RIDER, true);
if (Creature* Dark_Rider = me->FindNearestCreature(NPC_DARK_RIDER_OF_ACHERUS, 15))
ENSURE_AI(npc_dark_rider_of_acherus::npc_dark_rider_of_acherusAI, Dark_Rider->AI())->InitDespawnHorse(caster);
@@ -649,7 +649,7 @@ public:
{
Unit* temp = me->SummonCreature(NPC_ACHERUS_GHOUL, (me->GetPositionX() - 20) + rand32() % 40, (me->GetPositionY() - 20) + rand32() % 40, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000);
temp->SetWalk(false);
temp->SetFaction(2084);
temp->SetFaction(FACTION_UNDEAD_SCOURGE_3);
uiGhoulGUID[uiSummon_counter] = temp->GetGUID();
++uiSummon_counter;
}
@@ -667,7 +667,7 @@ public:
{
Unit* temp = me->SummonCreature(NPC_RAMPAGING_ABOMINATION, (me->GetPositionX() - 20) + rand32() % 40, (me->GetPositionY() - 20) + rand32() % 40, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000);
temp->SetWalk(false);
temp->SetFaction(2084);
temp->SetFaction(FACTION_UNDEAD_SCOURGE_3);
uiAbominationGUID[uiSummon_counter] = temp->GetGUID();
++uiSummon_counter;
}
@@ -685,7 +685,7 @@ public:
{
Unit* temp = me->SummonCreature(NPC_WARRIOR_OF_THE_FROZEN_WASTES, (me->GetPositionX() - 20) + rand32() % 40, (me->GetPositionY() - 20) + rand32() % 40, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000);
temp->SetWalk(false);
temp->SetFaction(2084);
temp->SetFaction(FACTION_UNDEAD_SCOURGE_3);
uiWarriorGUID[uiSummon_counter] = temp->GetGUID();
++uiSummon_counter;
}
@@ -703,7 +703,7 @@ public:
{
Unit* temp = me->SummonCreature(NPC_FLESH_BEHEMOTH, (me->GetPositionX() - 20) + rand32() % 40, (me->GetPositionY() - 20) + rand32() % 40, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000);
temp->SetWalk(false);
temp->SetFaction(2084);
temp->SetFaction(FACTION_UNDEAD_SCOURGE_3);
uiBehemothGUID[uiSummon_counter] = temp->GetGUID();
++uiSummon_counter;
}
@@ -1535,7 +1535,7 @@ public:
if (!temp)
{
temp = me->SummonCreature(NPC_ACHERUS_GHOUL, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000);
temp->SetFaction(2084);
temp->SetFaction(FACTION_UNDEAD_SCOURGE_3);
uiGhoulGUID[i] = temp->GetGUID();
}
}
@@ -1545,7 +1545,7 @@ public:
if (!temp)
{
temp = me->SummonCreature(NPC_WARRIOR_OF_THE_FROZEN_WASTES, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000);
temp->SetFaction(2084);
temp->SetFaction(FACTION_UNDEAD_SCOURGE_3);
uiAbominationGUID[i] = temp->GetGUID();
}
}
@@ -1555,7 +1555,7 @@ public:
if (!temp)
{
temp = me->SummonCreature(NPC_RAMPAGING_ABOMINATION, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000);
temp->SetFaction(2084);
temp->SetFaction(FACTION_UNDEAD_SCOURGE_3);
uiWarriorGUID[i] = temp->GetGUID();
}
}
@@ -1565,7 +1565,7 @@ public:
if (!temp)
{
temp = me->SummonCreature(NPC_FLESH_BEHEMOTH, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000);
temp->SetFaction(2084);
temp->SetFaction(FACTION_UNDEAD_SCOURGE_3);
uiBehemothGUID[i] = temp->GetGUID();
}
}
@@ -1577,7 +1577,7 @@ public:
if (!temp)
{
temp = me->SummonCreature(NPC_DEFENDER_OF_THE_LIGHT, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000);
temp->SetFaction(2089);
temp->SetFaction(FACTION_SCARLET_CRUSADE);
me->AddThreat(temp, 0.0f);
uiDefenderGUID[i] = temp->GetGUID();
}
@@ -1588,7 +1588,7 @@ public:
if (!temp)
{
temp = me->SummonCreature(NPC_RIMBLAT_EARTHSHATTER, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000);
temp->SetFaction(2089);
temp->SetFaction(FACTION_SCARLET_CRUSADE);
me->AddThreat(temp, 0.0f);
uiEarthshatterGUID[i] = temp->GetGUID();
}
@@ -1597,7 +1597,7 @@ public:
if (!temp)
{
temp = me->SummonCreature(NPC_KORFAX_CHAMPION_OF_THE_LIGHT, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 600000);
temp->SetFaction(2089);
temp->SetFaction(FACTION_SCARLET_CRUSADE);
me->AddThreat(temp, 0.0f);
uiKorfaxGUID = temp->GetGUID();
}
@@ -1605,7 +1605,7 @@ public:
if (!temp)
{
temp = me->SummonCreature(NPC_LORD_MAXWELL_TYROSUS, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 600000);
temp->SetFaction(2089);
temp->SetFaction(FACTION_SCARLET_CRUSADE);
me->AddThreat(temp, 0.0f);
uiMaxwellGUID = temp->GetGUID();
}
@@ -1613,7 +1613,7 @@ public:
if (!temp)
{
temp = me->SummonCreature(NPC_COMMANDER_ELIGOR_DAWNBRINGER, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 600000);
temp->SetFaction(2089);
temp->SetFaction(FACTION_SCARLET_CRUSADE);
me->AddThreat(temp, 0.0f);
uiEligorGUID = temp->GetGUID();
}
@@ -1621,7 +1621,7 @@ public:
if (!temp)
{
temp = me->SummonCreature(NPC_RAYNE, LightofDawnLoc[0].GetPositionWithOffset({ float(rand32() % 30), float(rand32() % 30), 0.0f, 0.0f }), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000);
temp->SetFaction(2089);
temp->SetFaction(FACTION_SCARLET_CRUSADE);
me->AddThreat(temp, 0.0f);
uiRayneGUID = temp->GetGUID();
}
@@ -74,8 +74,6 @@ enum ApothecaryMisc
{
ACTION_START_EVENT = 1,
ACTION_START_FIGHT = 2,
FACTION_APOTHECARY_HOSTILE = 14,
FACTION_APOTHECARY_FRIENDLY = 35,
GOSSIP_OPTION_START = 0,
GOSSIP_MENU_HUMMEL = 10847,
QUEST_YOUVE_BEEN_SERVED = 14488,
@@ -115,7 +113,7 @@ class boss_apothecary_hummel : public CreatureScript
_deadCount = 0;
_isDead = false;
events.SetPhase(PHASE_ALL);
me->SetFaction(FACTION_APOTHECARY_FRIENDLY);
me->SetFaction(FACTION_FRIENDLY);
me->SummonCreatureGroup(1);
}
@@ -134,7 +132,7 @@ class boss_apothecary_hummel : public CreatureScript
events.ScheduleEvent(EVENT_HUMMEL_SAY_0, Milliseconds(1));
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
me->SetFaction(FACTION_APOTHECARY_HOSTILE);
me->SetFaction(FACTION_MONSTER);
DummyEntryCheckPredicate pred;
summons.DoAction(ACTION_START_EVENT, pred);
}
@@ -289,7 +287,7 @@ struct npc_apothecary_genericAI : public ScriptedAI
if (action == ACTION_START_EVENT)
{
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
me->SetFaction(FACTION_APOTHECARY_HOSTILE);
me->SetFaction(FACTION_MONSTER);
me->GetMotionMaster()->MovePoint(1, _movePos);
}
else if (action == ACTION_START_FIGHT)
@@ -155,7 +155,7 @@ public:
if (Creature* Sath = ObjectAccessor::GetCreature(*me, SathGUID))
Sath->AI()->EnterEvadeMode();
me->SetFaction(14);
me->SetFaction(FACTION_MONSTER);
if (!bJustReset) //first reset at create
{
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE + UNIT_FLAG_NOT_SELECTABLE);
@@ -379,7 +379,7 @@ public:
switch (TalkSequence)
{
case 1:
me->SetFaction(35);
me->SetFaction(FACTION_FRIENDLY);
TalkTimer = 1000;
break;
case 2:
@@ -287,7 +287,7 @@ public:
me->RemoveDynObject(SPELL_RING_OF_BLUE_FLAMES);
for (uint8 i = 0; i < 4; ++i)
if (GameObject* pOrb = GetOrb(i))
pOrb->SetFaction(0);
pOrb->SetFaction(FACTION_NONE);
}
void EmpowerOrb(bool all)
@@ -304,7 +304,7 @@ public:
if (GameObject* pOrb = GetOrb(i))
{
pOrb->CastSpell(me, SPELL_RING_OF_BLUE_FLAMES);
pOrb->SetFaction(35);
pOrb->SetFaction(FACTION_FRIENDLY);
pOrb->setActive(true);
pOrb->Refresh();
}
@@ -316,7 +316,7 @@ public:
if (GameObject* pOrb = GetOrb(urand(0, 3)))
{
pOrb->CastSpell(me, SPELL_RING_OF_BLUE_FLAMES);
pOrb->SetFaction(35);
pOrb->SetFaction(FACTION_FRIENDLY);
pOrb->setActive(true);
pOrb->Refresh();
@@ -369,7 +369,7 @@ public:
InstanceScript* instance = go->GetInstanceScript();
player->SummonCreature(NPC_POWER_OF_THE_BLUE_DRAGONFLIGHT, player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), 0.0f, TEMPSUMMON_TIMED_DESPAWN, 121000);
player->CastSpell(player, SPELL_VENGEANCE_OF_THE_BLUE_FLIGHT, false);
go->SetFaction(0);
go->SetFaction(FACTION_NONE);
if (Creature* pKalec = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_KALECGOS_KJ)))
ENSURE_AI(boss_kalecgos_kj::boss_kalecgos_kjAI, pKalec->AI())->SetRingOfBlueFlames();
@@ -96,7 +96,7 @@ class boss_archaedas : public CreatureScript
Initialize();
instance->SetData(0, 5); // respawn any dead minions
me->SetFaction(35);
me->SetFaction(FACTION_FRIENDLY);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetControlled(true, UNIT_STATE_ROOT);
me->AddAura(SPELL_FREEZE_ANIM, me);
@@ -112,14 +112,14 @@ class boss_archaedas : public CreatureScript
minion->CastSpell(minion, SPELL_ARCHAEDAS_AWAKEN, true);
minion->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
minion->SetControlled(false, UNIT_STATE_ROOT);
minion->SetFaction(14);
minion->SetFaction(FACTION_MONSTER);
minion->RemoveAura(SPELL_MINION_FREEZE_ANIM);
}
}
void EnterCombat(Unit* /*who*/) override
{
me->SetFaction(14);
me->SetFaction(FACTION_MONSTER);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetControlled(false, UNIT_STATE_ROOT);
}
@@ -259,7 +259,7 @@ class npc_archaedas_minions : public CreatureScript
{
Initialize();
me->SetFaction(35);
me->SetFaction(FACTION_FRIENDLY);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetControlled(true, UNIT_STATE_ROOT);
me->RemoveAllAuras();
@@ -268,7 +268,7 @@ class npc_archaedas_minions : public CreatureScript
void EnterCombat(Unit* /*who*/) override
{
me->SetFaction (14);
me->SetFaction (FACTION_MONSTER);
me->RemoveAllAuras();
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetControlled(false, UNIT_STATE_ROOT);
@@ -348,7 +348,7 @@ class npc_stonekeepers : public CreatureScript
void Reset() override
{
me->SetFaction(35);
me->SetFaction(FACTION_FRIENDLY);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetControlled(true, UNIT_STATE_ROOT);
me->RemoveAllAuras();
@@ -357,7 +357,7 @@ class npc_stonekeepers : public CreatureScript
void EnterCombat(Unit* /*who*/) override
{
me->SetFaction(14);
me->SetFaction(FACTION_MONSTER);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetControlled(false, UNIT_STATE_ROOT);
}
@@ -144,7 +144,7 @@ class instance_uldaman : public InstanceMapScript
void SetFrozenState(Creature* creature)
{
creature->SetFaction(35);
creature->SetFaction(FACTION_FRIENDLY);
creature->RemoveAllAuras();
creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
creature->SetControlled(true, UNIT_STATE_ROOT);
@@ -179,7 +179,7 @@ class instance_uldaman : public InstanceMapScript
if (!target || !target->IsAlive())
continue;
target->SetControlled(false, UNIT_STATE_ROOT);
target->SetFaction(14);
target->SetFaction(FACTION_MONSTER);
target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
target->RemoveAura(SPELL_MINION_FREEZE_ANIM);
@@ -200,11 +200,11 @@ class instance_uldaman : public InstanceMapScript
for (GuidVector::const_iterator i = archaedasWallMinions.begin(); i != archaedasWallMinions.end(); ++i)
{
Creature* target = instance->GetCreature(*i);
if (!target || !target->IsAlive() || target->GetFaction() == 14)
if (!target || !target->IsAlive() || target->GetFaction() == FACTION_MONSTER)
continue;
target->SetControlled(false, UNIT_STATE_ROOT);
target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
target->SetFaction(14);
target->SetFaction(FACTION_MONSTER);
target->RemoveAura(SPELL_MINION_FREEZE_ANIM);
archaedas->CastSpell(target, SPELL_AWAKEN_VAULT_WALKER, true);
target->CastSpell(target, SPELL_ARCHAEDAS_AWAKEN, true);
@@ -267,7 +267,7 @@ class instance_uldaman : public InstanceMapScript
if (!ironaya)
return;
ironaya->SetFaction(415);
ironaya->SetFaction(FACTION_TITAN);
ironaya->SetControlled(false, UNIT_STATE_ROOT);
ironaya->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
@@ -196,7 +196,7 @@ class boss_akilzon : public CreatureScript
y = 1380.0f + rand32() % 60;
if (Unit* trigger = me->SummonTrigger(x, y, z, 0, 2000))
{
trigger->SetFaction(35);
trigger->SetFaction(FACTION_FRIENDLY);
trigger->SetMaxHealth(100000);
trigger->SetHealth(100000);
trigger->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
@@ -291,7 +291,7 @@ class boss_akilzon : public CreatureScript
Cloud->SetDisableGravity(true);
Cloud->StopMoving();
Cloud->SetObjectScale(1.0f);
Cloud->SetFaction(35);
Cloud->SetFaction(FACTION_FRIENDLY);
Cloud->SetMaxHealth(9999999);
Cloud->SetHealth(9999999);
Cloud->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
@@ -89,9 +89,7 @@ enum Misc
{
POINT_START_REVIVE = 1,
DATA_OHGANOT_SO_FAST = 5762,
FACTION_NONE = 1665
DATA_OHGANOT_SO_FAST = 5762
};
enum SummonGroups
@@ -57,8 +57,7 @@ enum ProfessorPhizzlethorpe
QUEST_SUNKEN_TREASURE = 665,
QUEST_GOGGLE_BOGGLE = 26050,
// Creatures
NPC_VENGEFUL_SURGE = 2776,
FACTION_SUNKEN_TREASURE = 113
NPC_VENGEFUL_SURGE = 2776
};
class npc_professor_phizzlethorpe : public CreatureScript
@@ -114,7 +113,7 @@ class npc_professor_phizzlethorpe : public CreatureScript
{
Talk(SAY_PROGRESS_1, player);
npc_escortAI::Start(false, false, player->GetGUID(), quest);
me->SetFaction(FACTION_SUNKEN_TREASURE);
me->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_PASSIVE);
}
}
@@ -52,8 +52,7 @@ enum RangerLilatha
GO_CAGE = 181152,
NPC_CAPTAIN_HELIOS = 16220,
NPC_MUMMIFIED_HEADHUNTER = 16342,
NPC_SHADOWPINE_ORACLE = 16343,
FACTION_QUEST_ESCAPE = 113
NPC_SHADOWPINE_ORACLE = 16343
};
class npc_ranger_lilatha : public CreatureScript
@@ -133,7 +132,7 @@ public:
{
if (quest->GetQuestId() == QUEST_ESCAPE_FROM_THE_CATACOMBS)
{
creature->SetFaction(FACTION_QUEST_ESCAPE);
creature->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_PASSIVE);
if (npc_escortAI* pEscortAI = CAST_AI(npc_ranger_lilatha::npc_ranger_lilathaAI, creature->AI()))
pEscortAI->Start(true, false, player->GetGUID());
@@ -45,9 +45,7 @@ enum eOOX
SAY_OOX_END = 4,
QUEST_RESQUE_OOX_09 = 836,
NPC_MARAUDING_OWL = 7808,
NPC_VILE_AMBUSHER = 7809,
FACTION_ESCORTEE_A = 774,
FACTION_ESCORTEE_H = 775
NPC_VILE_AMBUSHER = 7809
};
class npc_oox09hl : public CreatureScript
@@ -79,7 +77,7 @@ public:
if (quest->GetQuestId() == QUEST_RESQUE_OOX_09)
{
me->SetStandState(UNIT_STAND_STATE_STAND);
me->SetFaction(player->GetTeam() == ALLIANCE ? FACTION_ESCORTEE_A : FACTION_ESCORTEE_H);
me->SetFaction(player->GetTeam() == ALLIANCE ? FACTION_ESCORTEE_A_PASSIVE : FACTION_ESCORTEE_H_PASSIVE);
Talk(SAY_OOX_START, player);
npc_escortAI::Start(false, false, player->GetGUID(), quest);
}
@@ -80,7 +80,7 @@ public:
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_STUN);
me->CombatStop(); //stop combat
me->DeleteThreatList(); //unsure of this
me->SetFaction(83); //horde generic
me->SetFaction(FACTION_HORDE_GENERIC);
bReset = true;
Reset_Timer = 60000;
@@ -98,7 +98,7 @@ public:
{
EnterEvadeMode();
bReset = false;
me->SetFaction(28); //troll, bloodscalp
me->SetFaction(FACTION_TROLL_BLOODSCALP);
return;
}
@@ -40,7 +40,6 @@ EndContentData */
enum TapokeSlim
{
QUEST_MISSING_DIPLO_PT11 = 1249,
FACTION_ENEMY = 168,
SPELL_STEALTH = 1785,
SPELL_CALL_FRIENDS = 16457, //summons 1x friend
NPC_SLIMS_FRIEND = 4971,
@@ -923,7 +923,7 @@ void hyjalAI::HideNearPos(float x, float y)
for (std::list<Creature*>::const_iterator itr = creatures.begin(); itr != creatures.end(); ++itr)
{
(*itr)->SetVisible(false);
(*itr)->SetFaction(35);//make them friendly so mobs won't attack them
(*itr)->SetFaction(FACTION_FRIENDLY);//make them friendly so mobs won't attack them
}
}
}
@@ -1022,7 +1022,7 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff)
if ((*itr) && (*itr)->IsAlive())
{
(*itr)->CastSpell(*itr, SPELL_TELEPORT_VISUAL, true);
(*itr)->SetFaction(35);//make them friendly so mobs won't attack them
(*itr)->SetFaction(FACTION_FRIENDLY);//make them friendly so mobs won't attack them
(*itr)->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
}
}
@@ -82,7 +82,7 @@ public:
if (Invisible && InvisibleTimer <= diff)
{
//Become visible again
me->SetFaction(14);
me->SetFaction(FACTION_MONSTER);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
//Noxxion model
me->SetDisplayId(11172);
@@ -122,7 +122,7 @@ public:
//Interrupt any spell casting
//me->m_canMove = true;
me->InterruptNonMeleeSpells(false);
me->SetFaction(35);
me->SetFaction(FACTION_FRIENDLY);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
// Invisible Model
me->SetDisplayId(11686);
@@ -57,8 +57,6 @@ enum Belnistrasz
EVENT_FIREBALL = 5,
EVENT_FROST_NOVA = 6,
FACTION_ESCORT = 250,
PATH_ESCORT = 871710,
POINT_REACH_IDOL = 17,
@@ -136,7 +134,7 @@ public:
eventInProgress = true;
Talk(SAY_QUEST_ACCEPTED);
me->RemoveFlag(UNIT_NPC_FLAGS, GOSSIP_OPTION_QUESTGIVER);
me->SetFaction(FACTION_ESCORT);
me->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_ACTIVE);
me->GetMotionMaster()->MovePath(PATH_ESCORT, false);
}
}
@@ -68,7 +68,7 @@ public:
switch (go->GetEntry())
{
case 21099: DoorWardGUID = go->GetGUID(); break;
case 20920: go->SetFaction(0); break; // big fat fugly hack
case 20920: go->SetFaction(FACTION_NONE); break; // big fat fugly hack
}
}
@@ -57,7 +57,7 @@ public:
{
Start(true, false, player->GetGUID());
Talk(SAY_READY, player);
me->SetFaction(113);
me->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_PASSIVE);
}
}
@@ -112,7 +112,7 @@ public:
//Cast
me->HandleEmoteCommand(EMOTE_ONESHOT_SUBMERGE);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetFaction(35);
me->SetFaction(FACTION_FRIENDLY);
DoCast(me, SPELL_DIRTMOUND_PASSIVE);
Submerged = true;
@@ -135,7 +135,7 @@ public:
if (Submerged && Back_Timer <= diff)
{
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetFaction(14);
me->SetFaction(FACTION_MONSTER);
DoCastVictim(SPELL_GROUND_RUPTURE);
@@ -332,7 +332,7 @@ struct boss_twinemperorsAI : public ScriptedAI
if (c->isDead())
{
c->Respawn();
c->SetFaction(7);
c->SetFaction(FACTION_CREATURE);
c->RemoveAllAuras();
}
if (c->IsWithinDistInMap(me, ABUSE_BUG_RANGE))
@@ -427,7 +427,7 @@ public:
void CastSpellOnBug(Creature* target) override
{
target->SetFaction(14);
target->SetFaction(FACTION_MONSTER);
target->AI()->AttackStart(me->getThreatManager().getHostilTarget());
target->AddAura(SPELL_MUTATE_BUG, target);
target->SetFullHealth();
@@ -518,7 +518,7 @@ public:
void CastSpellOnBug(Creature* target) override
{
target->SetFaction(14);
target->SetFaction(FACTION_MONSTER);
target->AddAura(SPELL_EXPLODEBUG, target);
target->SetFullHealth();
}
@@ -96,7 +96,7 @@ public:
creature->AI()->Talk(SAY_MAKE_PREPARATIONS);
creature->SetFaction(250);
creature->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_ACTIVE);
creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
ENSURE_AI(npc_escortAI, (creature->AI()))->Start(false, false, player->GetGUID());
@@ -47,11 +47,6 @@ enum Events
EVENT_HEALING_WAVE = 4
};
enum Faction
{
ZUMRAH_FRIENDLY_FACTION = 35
};
class boss_zum_rah : public CreatureScript
{
public:
@@ -73,7 +68,7 @@ public:
void Reset() override
{
me->SetFaction(ZUMRAH_FRIENDLY_FACTION); // areatrigger sets faction to enemy
me->SetFaction(FACTION_FRIENDLY); // areatrigger sets faction to enemy
Initialize();
}
@@ -38,13 +38,6 @@ EndContentData */
## npc_sergeant_bly
######*/
enum blyAndCrewFactions
{
FACTION_HOSTILE = 14,
FACTION_FRIENDLY = 35, //while in cages (so the trolls won't attack them while they're caged)
FACTION_FREED = 250 //after release (so they'll be hostile towards trolls)
};
enum blySays
{
SAY_1 = 0,
@@ -151,7 +144,7 @@ public:
Text_Timer = 5000;
break;
case 3:
me->SetFaction(FACTION_HOSTILE);
me->SetFaction(FACTION_MONSTER);
if (Player* target = ObjectAccessor::GetPlayer(*me, PlayerGUID))
AttackStart(target);
@@ -196,7 +189,7 @@ public:
{
if (Creature* crew = ObjectAccessor::GetCreature(*me, instance->GetGuidData(entry)))
if (crew->IsAlive())
crew->SetFaction(FACTION_HOSTILE);
crew->SetFaction(FACTION_MONSTER);
}
};
@@ -235,7 +228,7 @@ private:
crew->SetWalk(true);
crew->SetHomePosition(x, y, z, 0);
crew->GetMotionMaster()->MovePoint(1, x, y, z);
crew->SetFaction(FACTION_FREED);
crew->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_ACTIVE);
}
}
};
@@ -43,7 +43,6 @@ enum RuulSnowhoof
NPC_THISTLEFUR_TOTEMIC = 3922,
NPC_THISTLEFUR_PATHFINDER = 3926,
QUEST_FREEDOM_TO_RUUL = 6482,
FACTION_QUEST = 113,
GO_CAGE = 178147
};
@@ -83,7 +82,7 @@ public:
{
if (quest->GetQuestId() == QUEST_FREEDOM_TO_RUUL)
{
me->SetFaction(FACTION_QUEST);
me->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_PASSIVE);
npc_escortAI::Start(true, false, player->GetGUID());
}
}
@@ -226,7 +225,7 @@ public:
if (quest->GetQuestId() == QUEST_VORSHA)
{
Talk(SAY_MUG_START1);
me->SetFaction(FACTION_QUEST);
me->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_PASSIVE);
npc_escortAI::Start(true, false, player->GetGUID());
}
}
@@ -187,7 +187,6 @@ enum Overgrind
AREA_COVE = 3579,
AREA_ISLE = 3639,
QUEST_GNOMERCY = 9537,
FACTION_HOSTILE = 14,
SPELL_DYNAMITE = 7978
};
@@ -232,7 +231,7 @@ public:
void sGossipSelect(Player* player, uint32 /*menuId*/, uint32 /*gossipListId*/) override
{
CloseGossipMenuFor(player);
me->SetFaction(FACTION_HOSTILE);
me->SetFaction(FACTION_MONSTER);
me->Attack(player, true);
}
@@ -337,8 +336,7 @@ enum Magwin
EVENT_STAND = 3,
EVENT_TALK_END = 4,
EVENT_COWLEN_TALK = 5,
QUEST_A_CRY_FOR_HELP = 9528,
FACTION_QUEST = 113
QUEST_A_CRY_FOR_HELP = 9528
};
class npc_magwin : public CreatureScript
@@ -403,7 +401,7 @@ public:
case EVENT_ACCEPT_QUEST:
if (Player* player = ObjectAccessor::GetPlayer(*me, _player))
Talk(SAY_START, player);
me->SetFaction(FACTION_QUEST);
me->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_PASSIVE);
_events.ScheduleEvent(EVENT_START_ESCORT, Seconds(1));
break;
case EVENT_START_ESCORT:
@@ -42,9 +42,6 @@ enum EternalBoard
{
QUEST_A_PAWN_ON_THE_ETERNAL_BOARD = 8519,
FACTION_HOSTILE = 14,
FACTION_FRIENDLY = 35,
EVENT_AREA_RADIUS = 65, // 65yds
EVENT_COOLDOWN = 500000, // in ms. appears after event completed or failed (should be = Adds despawn time)
@@ -970,7 +967,7 @@ public:
Merithra->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE);
Merithra->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
Merithra->SetUInt32Value(UNIT_FIELD_DISPLAYID, MERITHRA_NIGHT_ELF_FORM);
Merithra->SetFaction(35);
Merithra->SetFaction(FACTION_FRIENDLY);
}
if (Caelestrasz)
@@ -978,7 +975,7 @@ public:
Caelestrasz->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE);
Caelestrasz->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
Caelestrasz->SetUInt32Value(UNIT_FIELD_DISPLAYID, CAELESTRASZ_NIGHT_ELF_FORM);
Caelestrasz->SetFaction(35);
Caelestrasz->SetFaction(FACTION_FRIENDLY);
}
if (Arygos)
@@ -986,7 +983,7 @@ public:
Arygos->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE);
Arygos->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
Arygos->SetUInt32Value(UNIT_FIELD_DISPLAYID, ARYGOS_GNOME_FORM);
Arygos->SetFaction(35);
Arygos->SetFaction(FACTION_FRIENDLY);
}
if (Anachronos)
+3 -3
View File
@@ -91,7 +91,7 @@ public:
void Reset() override
{
Initialize();
me->SetFaction(35);
me->SetFaction(FACTION_FRIENDLY);
}
void SendItem(Unit* receiver)
@@ -121,7 +121,7 @@ public:
{
if (SwitchFactionTimer <= diff)
{
me->SetFaction(91);
me->SetFaction(FACTION_ELEMENTAL);
isFriendly = false;
} else SwitchFactionTimer -= diff;
}
@@ -319,7 +319,7 @@ public:
{
if (quest->GetQuestId() == Q_OOX17)
{
creature->SetFaction(113);
creature->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_PASSIVE);
creature->SetFullHealth();
creature->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
@@ -297,7 +297,7 @@ public:
if (quest->GetQuestId() == QUEST_GUARDIANS_ALTAR)
{
creature->AI()->Talk(SAY_QUEST_START);
creature->SetFaction(FACTION_ESCORT_A_NEUTRAL_PASSIVE);
creature->SetFaction(FACTION_ESCORTEE_A_NEUTRAL_PASSIVE);
if (npc_ranshallaAI* escortAI = dynamic_cast<npc_ranshallaAI*>(creature->AI()))
escortAI->Start(false, false, player->GetGUID(), quest);
@@ -192,7 +192,7 @@ public:
{
damage = 0;
EnterEvadeMode();
me->SetFaction(35);
me->SetFaction(FACTION_FRIENDLY);
bDone = true;
}
}
@@ -320,7 +320,7 @@ public:
{
damage = 0;
EnterEvadeMode();
me->SetFaction(35);
me->SetFaction(FACTION_FRIENDLY);
bDone = true;
}
}
@@ -224,7 +224,7 @@ class boss_anubarak_trial : public CreatureScript
for (int i = 0; i < 10; i++)
if (Creature* scarab = me->SummonCreature(NPC_SCARAB, AnubarakLoc[1].GetPositionX()+urand(0, 50)-25, AnubarakLoc[1].GetPositionY()+urand(0, 50)-25, AnubarakLoc[1].GetPositionZ()))
{
scarab->SetFaction(31);
scarab->SetFaction(FACTION_PREY);
scarab->GetMotionMaster()->MoveRandom(10);
}
}
@@ -202,7 +202,6 @@ enum Actions
enum Misc
{
DATA_MADE_A_MESS = 45374613, // 4537, 4613 are achievement IDs
FACTION_SCOURGE = 974,
GOSSIP_MENU_MURADIN_BRONZEBEARD = 10934,
GOSSIP_MENU_HIGH_OVERLORD_SAURFANG = 10952
@@ -461,7 +460,7 @@ class boss_deathbringer_saurfang : public CreatureScript
{
case EVENT_INTRO_ALLIANCE_2:
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetFaction(FACTION_SCOURGE);
me->SetFaction(FACTION_UNDEAD_SCOURGE);
Talk(SAY_INTRO_ALLIANCE_2);
break;
case EVENT_INTRO_ALLIANCE_3:
@@ -474,7 +473,7 @@ class boss_deathbringer_saurfang : public CreatureScript
break;
case EVENT_INTRO_HORDE_2:
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->SetFaction(FACTION_SCOURGE);
me->SetFaction(FACTION_UNDEAD_SCOURGE);
Talk(SAY_INTRO_HORDE_2);
break;
case EVENT_INTRO_HORDE_4:
Loaded 100 of 142 files, more files were not shown because too many files have changed in this diff. Show more