@@ -2,6 +2,7 @@ package demoinfocs
22
33import (
44 "fmt"
5+ "math"
56 "strings"
67
78 "github.com/golang/geo/r3"
@@ -122,6 +123,8 @@ func (p *parser) bindBomb() {
122123 site = events .BombsiteA
123124 case 2 :
124125 site = events .BombsiteB
126+ case 0 :
127+ site = p .getClosestBombsiteFromPosition (planter .Position ())
125128 }
126129
127130 if ! p .disableMimicSource1GameEvents {
@@ -305,18 +308,23 @@ func (p *parser) bindBombSites() {
305308 playerResource .BindProperty ("m_bombsiteCenterB" , & p .bombsiteB .center , st .ValTypeVector )
306309 })
307310
308- p .stParser .ServerClasses ().FindByName ("CBaseTrigger" ).OnEntityCreated (func (baseTrigger st.Entity ) {
309- t := new (boundingBoxInformation )
310- p .triggers [baseTrigger .ID ()] = t
311+ if p .isSource2 () {
312+ p .stParser .ServerClasses ().FindByName ("CBombTarget" ).OnEntityCreated (func (target st.Entity ) {
313+ t := new (boundingBoxInformation )
314+ p .triggers [target .ID ()] = t
315+
316+ target .BindProperty ("m_vecMins" , & t .min , st .ValTypeVector )
317+ target .BindProperty ("m_vecMaxs" , & t .max , st .ValTypeVector )
318+ })
319+ } else {
320+ p .stParser .ServerClasses ().FindByName ("CBaseTrigger" ).OnEntityCreated (func (baseTrigger st.Entity ) {
321+ t := new (boundingBoxInformation )
322+ p .triggers [baseTrigger .ID ()] = t
311323
312- if p .isSource2 () {
313- baseTrigger .BindProperty ("m_vecMins" , & t .min , st .ValTypeVector )
314- baseTrigger .BindProperty ("m_vecMaxs" , & t .max , st .ValTypeVector )
315- } else {
316324 baseTrigger .BindProperty ("m_Collision.m_vecMins" , & t .min , st .ValTypeVector )
317325 baseTrigger .BindProperty ("m_Collision.m_vecMaxs" , & t .max , st .ValTypeVector )
318- }
319- })
326+ })
327+ }
320328}
321329
322330func (p * parser ) bindPlayers () {
@@ -899,10 +907,10 @@ func (p *parser) bindWeaponS2(entity st.Entity) {
899907 // - The player is inside the buy zone
900908 // - The player's money has increased AND the weapon entity is destroyed at the same tick (unfortunately the money is updated first)
901909 var (
902- owner * common.Player
903- oldOwnerMoney int
910+ owner * common.Player
911+ oldOwnerMoney int
904912 lastMoneyUpdateTick int
905- lastMoneyIncreased bool
913+ lastMoneyIncreased bool
906914 )
907915
908916 entity .Property ("m_hOwnerEntity" ).OnUpdate (func (val st.PropertyValue ) {
@@ -1300,3 +1308,18 @@ func (p *parser) bindHostages() {
13001308 })
13011309 })
13021310}
1311+
1312+ func getDistanceBetweenVectors (vectorA r3.Vector , vectorB r3.Vector ) float64 {
1313+ return math .Sqrt (math .Pow (vectorA .X - vectorB .X , 2 ) + math .Pow (vectorA .Y - vectorB .Y , 2 ) + math .Pow (vectorA .Z - vectorB .Z , 2 ))
1314+ }
1315+
1316+ func (p * parser ) getClosestBombsiteFromPosition (position r3.Vector ) events.Bombsite {
1317+ distanceFromBombsiteA := getDistanceBetweenVectors (position , p .bombsiteA .center )
1318+ distanceFromBombsiteB := getDistanceBetweenVectors (position , p .bombsiteB .center )
1319+
1320+ if distanceFromBombsiteA < distanceFromBombsiteB {
1321+ return events .BombsiteA
1322+ }
1323+
1324+ return events .BombsiteB
1325+ }
0 commit comments