//////////////////////////////////////////////////////////////////////////////////////////// // WORKS IN mvm_robotfactory ONLY! (at least for now) //////////////////////////////////////////////////////////////////////////////////////////// local MONORAILTANK_VALUES_TABLE = { MONORAILTANK_MODEL_DEFAULT = "models/robot_factory/monorail_tank.mdl" MONORAILTANK_MODEL_DAMAGE1 = "models/robot_factory/monorail_tank_damage1.mdl" MONORAILTANK_MODEL_DAMAGE2 = "models/robot_factory/monorail_tank_damage2.mdl" MONORAILTANK_MODEL_DAMAGE3 = "models/robot_factory/monorail_tank_damage3.mdl" } foreach(k,v in MONORAILTANK_VALUES_TABLE) if(!(k in TankExt.ValueOverrides)) ROOT[k] <- v PrecacheModel(MONORAILTANK_MODEL_DEFAULT) PrecacheModel(MONORAILTANK_MODEL_DAMAGE1) PrecacheModel(MONORAILTANK_MODEL_DAMAGE2) PrecacheModel(MONORAILTANK_MODEL_DAMAGE3) TankExt.NewTankScript("monorailtank", { Model = { Default = MONORAILTANK_MODEL_DEFAULT Damage1 = MONORAILTANK_MODEL_DAMAGE1 Damage2 = MONORAILTANK_MODEL_DAMAGE2 Damage3 = MONORAILTANK_MODEL_DAMAGE3 } OnSpawn = function(hTank, sName, hPath) { hTank.SetAbsAngles(QAngle(0, hTank.GetAbsAngles().y, 0)) for(local hChild = hTank.FirstMoveChild(); hChild != null; hChild = hChild.NextMovePeer()) hChild.DisableDraw() local hTank_scope = hTank.GetScriptScope() local flSpeed = GetPropFloat(hTank, "m_speed") hTank_scope.hTrackTrain <- SpawnEntityFromTable("func_tracktrain", { origin = hTank.GetOrigin() speed = flSpeed startspeed = flSpeed target = hPath.GetName() }) hTank_scope.flLastSpeed <- flSpeed hTank_scope.Think <- function() { local vecTrackTrain = hTrackTrain.GetOrigin() self.SetAbsOrigin(vecTrackTrain) self.GetLocomotionInterface().Reset() local flSpeed = GetPropFloat(self, "m_speed") if(flSpeed == 0) flSpeed = 0.001 if(flSpeed != flLastSpeed) { flLastSpeed = flSpeed SetPropFloat(hTrackTrain, "m_flSpeed", flSpeed) } return -1 } TankExt.AddThinkToEnt(hTank, "Think") } OnDeath = function() { if(hTrackTrain && hTrackTrain.IsValid()) hTrackTrain.Destroy() local hDestruction = FindByClassnameNearest("tank_destruction", self.GetOrigin(), 16) if(hDestruction && hDestruction.IsValid()) hDestruction.Destroy() } })