Previous Closed Source Changelog - cortex-command-community/Cortex-Command-Community-Project GitHub Wiki

NOTE: Everything in this changelog is work done by weegee while the game was still closed source. Due to differences in versioning and process, it is separated from the main changelog, which can be found here. You can find a download link for this version of the game (B33) here.


27.01.2019

  • Working Networking multiplayer implementation.

29.01.2019

  • Added AudioChannels option to Settings.ini though that does not seem to actually change anything.

30.01.2019

  • Build in VS 2017 with v141 toolchain is working but breaks Lua.

31.01.2019

  • Lua:
ADoor:
	Enum DoorState
		CLOSED, 0
		OPENING, 1
		OPEN, 2
		CLOSING, 3
	Func GetDoorState
	Func OpenDoor
	Func CloseDoor
	Func SetClosedByDefault

HDFirearm:
	Prop MuzzleOffset, r/w
	Prop IsAnimatedManually, r/w
	
HeldDevice:
	Prop SharpLength, r/w
	Prop SupportOffset, r/w
	Func SetSupported
  • INI:
HDFirearm:
	IsAnimatedManually, r/w

01.02.2019

  • INI merging tool to speed up loading times. See Base.rte\Tools
  • Reworked loading screen to reduce loading time.
  • Added an option "DisableLoadingScreen" in settings.ini to disable loading screen completely to reduce loading time (Thanks Duh102, CrazyMLC, MaximDude)
  • Fixed InvincibleCrafts and ToughCrafts global scripts (Thanks 4zK)
  • Lua:
	ACDropShip: 
		Prop LeftHatch, r/o
		Prop RightHatch, r/o
	
	MovableMan:
		Func FindObjectByUniqueID

02.02.2019

  • Lua:
MOSRotating:
	Coll Emitters
	Coll Attachables

AHuman & ACrab:
	Prop LimbPathPushForce, r/w
	Func GetLimbPathSpeed
	Func SetLimbPathSpeed

Scene:
	Prop GlobalAcc, r/w
  • Added Low Gravity and Faster walking global scripts.

03.02.2019

  • Lua:
Attachable:
	Prop InheritsRotAngle, r/w

MovableObject:
	Prop GlobalAccScalar, r/w
	Prop AirResistance, r/w
	Prop AirThreshold, r/w

ACDropShip:
	Prop MaxEngineAngle, r/w

AEmitter:
	Prop FlashScale, r/w
  • INI:
Attachable:
	Prop InheritsRotAngle
  • Added bulky drop ships global script.
  • Added per-player DrawPrimitive functions allowing to draw on different player screens.

07.02.2019

  • Lua:
ACDropShip:
	Prop LateralControlSpeed, r/w

ACRocket:
	Enum LandingGearState
		RAISED, 0
		LOWERED, 1
		LOWERING, 2
		RAISING, 3

	Prop MainEngine, r/o
	Prop LeftEngine, r/o
	Prop RightEngine, r/o
	Prop LeftThruster, r/o
	Prop RightThruster, r/o
	Prop GearState, r/o

Emission:
	Prop ParticlesPerMinute, r/w
	Prop MinVelocity, r/w
	Prop MaxVelocity, r/w
	Prop PushesEmitter, r/w
	Prop LifeVariation, r/w
	Prop BurstSize, r/w
	Prop Spread, r/w
	Func ResetEmissionTimers

Emitter:
	Coll EmissionList
  • INI:
ACDropShip:
	Prop LateralControlSpeed
  • Fixed a bug when AEmitter flash was drawn in the wrong position if emitter was not emitting.

10.02.2019

  • You can press CTRL + ~ (ConsoleMan.ForceVisibility = true) to toggle console which does not grab input.
  • Lua:
UInputMan:
	Prop FlagAltState, r/o
	Prop FlagShiftState, r/o
	Prop FlagCtrlState, r/o

ConsoleMan:
	Prop ForceVisibility, r/w

MovableObject:
	Prop IgnoreTerrain, r/w

11.02.2019

  • Added ping display to both client and server. Press ALT, CTRL or SHIFT in client to see ping.

13.02.2019

  • Lua:
PresetMan:
	Func GetLoadout

14.02.2019

  • Lua:
Scene:
	Coll Deployments

Deployment:
	Func CreateDeployedActor
	Func CreateDeployedObject
	Func GetLoadoutName
	Prop SpawnRadius, r/o
	Prop ID, r/o
	Prop HFlipped, r/o

20.02.2019

  • Implemented mass and passengers count constraints for crafts.
  • Added global scripts to disable buy menu constraints.
  • Lua:
BuyMenuGUI:
	Prop EnforceMaxPassengersConstraint, r/w
	Prop EnforceMaxMassConstraint, r/w

SceneObject:
	Func SetGoldValue

Attachable:
	Func GetParent

21.02.2019

  • Added binding UI for weapon pick, drop, next, prev and reload for "keyboard only" and "keyboard" control schemes.

03.03.2019

  • Lua:
AudioMan:
	Func PlaySound
  • Bullets traveled more than LethalRange (if LethalRange > 0) distance won't hit target as if they missed it.
  • MOSRotating now respects Attachable.DrawAfterParent when drawing generic attachments.

04.03.2019

  • Lua:
MovableObject:
	Prop HitWhatMOID, r/o
	Prop HitWhatTerrMaterial, r/o
	Prop HitWhatParticleUniqueID, r/o

MOSRotating:
	Prop TravelImpulse, r/o

Actor:
	Prop ImpulseDamageThreshold, r/w
  • Added Global scripts Better jetpacks, Constant Gold Income and All Units Are Brains

18.03.2019

  • Lua:
Sound:
	Func IsPlaying
	Func Stop
	Func UpdateDistance

ACraft:
	Prop DeliveryDelayMultiplier, r/o
  • INI:
ACraft:
	Prop DeliveryDelayMultiplier
  • Buy menu GUI now shows order mass minus craft mass.

23.03.2019

  • Lua:
Material:
	Prop ID, r/o
	Prop Restitution, r/o
	Prop Bounce, r/o
	Prop Friction, r/o
	Prop Stickiness, r/o
	Prop Strength, r/o
	Prop StructuralIntegrity, r/o
	Prop DensityKGPerVolumeL, r/o
	Prop DensityKGPerPixel, r/o
	Prop SettleMaterial, r/o
	Prop SpawnMaterial, r/o
	Prop TransformsInto, r/o
	Prop IsScrap, r/o

MovableObject:
	Prop Material, r/o

SceneMan:
	Func GetMaterial
	Func GetMaterialFromID

MovableObject:
	Prop MissionCritical, r/w
	Prop DamageOnCollision, r/w

28.03.2019

  • Lua:
Arm (AHuman):
	Prop IdleOffset, r/w
  • Fixed a bug in Siege when incorrect units were spawned.

19.04.2019

  • Lua:
Actor:
	Prop AimRange, r/w

MovableObject:
	Func GetForcesCount
	Func GetForceVector
	Func GetForceOffset
	Func SetForceVector
	Func SetForceOffset
	Func GetImpulsesCount
	Func GetImpulseVector
	Func GetImpulseOffset
	Func SetImpulseVector
	Func SetImpulseOffset

21.04.2019

  • Included NAT punch-through server in the package - NATCompleteServer.exe

22.04.2019

  • Lua:
MOSRotating:
	Prop TravelImpulse, r/w

23.04.2019

  • Lua:
Attachable:
	Prop JointOffset, r/w

27.04.2019

  • Lua:
AHuman::Arm:
	Prop HandPos, r/w
  • Fixed a crash when calling TimerMan.TicksPerSecond in Lua script

01.05.2019

  • Fixed a situation where flipped crafts dropped units in invalid direction.

06.05.2019

INI:
	GlobalScript:
		LateUpdate // If 0 (default) the script is updated during ActivityMan::Update, if 1 the script is updated after MovableMan::Update

10.05.2019

  • Added shortcuts:
    • F1 - Shortcut help
    • F2 - Reload all scripts
    • F3 - Dump console text to file
    • F4 - Dump console input to file
    • F5 - Clear console log

11.05.2019

  • INI:
Emission:
	Prop Offset // Custom emission-specific offset which overrides parent AEmitter's offset if not zero
  • Lua:
Emission:
	Prop Offset, r/w

SceneMan:
	Func CastUnseenRay // bool CastUnseenRay(int team, const Vector &start, const Vector &ray, Vector &endPos, int strengthLimit, int skip, bool reveal);

12.05.2019

  • INI:
MovableObject:
	Prop DamageOnPenetration // If not 0 a fixed amount of damage is applied when this penetrates
	Prop WoundDamageMultiplier // Damage multiplier transferred to wound inflicted by this object on penetration
AEmitter:
	Prop EmitterDamageMultiplier // Damage multiplier derived from penetrating particle. Affects both burst and emit damage values.
  • Lua:
MovableObject:
	Prop DamageOnPenetration, r/w
	Prop WoundDamageMultiplier, r/w 
AEmitter:
	Prop EmitterDamageMultiplier, r/w
  • PresetMan:ReloadAllScripts() now first clears package.loaded table from user-defined modules to trigger their reload.

13.05.2019

  • Hopefullly fixed mouse capture issues in server mode.

18.05.2019

  • Fixed a situation when Gibs were saved as original presets instead of CopyOf's

20.05.2019

  • Lua:
MOSprite:
	Prop SpriteAnimDuration, r/w
	Func SetEntryWound(presetName, moduleName) // Sets entry wound emitter for this MOSprite
	Func SetExitWound(presetName, moduleName) // Sets exit wound emitter for this MOSprite
	Func GetEntryWoundPresetName() // Returns entry wound emitter preset name for this MOSprite
	Func GetExitWoundPresetName() // Returns exit wound emitter preset name for this MOSprite

Activity:
	Prop CraftsOrbitAtTheEdge, r/w // If true then on non-wrapped maps crafts beyond the edge of the map are considered orbited
  • INI:
Activity:
	Prop CraftsOrbitAtTheEdge

22.05.2019

  • Added UI editor executable GUI_Editor.exe to the package.

01.06.2019

  • Lua:
HeldDevice:
	Func IsDualWieldable() // Indicates whether this is a dual wieldable weapon or not.
	Func SetDualWieldable() // Sets whether this is a dual wieldable weapon or not.

AHuman:
	Func GetEquippedBGItem() // Returns whatever is equipped in the BG Arm, if anything.
  • INI:
HeldDevice:
	Prop DualWieldable // Can be wielded with bg hand or not. Equipped via EquipShieldInBGArm

08.06.2019

  • Lua:
HDFirearm:
	Prop RecoilTransmission, r/w // Scalar of how much of the fire recoil force is transmitted to who/whatever is holding this weapon

09.06.2019

  • DYNAMIC PIE MENUS:
	Tutorial:
		With this update it is now possible to alter pie menu in all kinds of ways dynamically.
		This is what happens when pie menu opens now:
			OnPieMenu(self) Lua-defined event handler is called for an actor who opened the pie menu, where self is the actor who opened the pie menu

			OnPieMenu(self) Lua-defined event handler is called for held item where self is the held item
			
			OnPieMenu(self) Lua-defined event handler is called for any MovableObject (in Actors, Items or Particles collections) on the scene which has ProvidesPieMenuContext = true where self is movable object itself
			
			OnPieMenu() Lua-defined event handler is called for current GAScripted activity. 

			OnPieMenu() Lua-defined event handler is called for all active global scripts.
			
			When handling OnPieMenuEvents you can access the actor which opened the pie menu via GameActivity.PieMenuActor, GlobalScript.PieMenuActor or MovableObject.PieMenuActor property depending on the object which caught the event
			
			When this event is called it is the only time to alter the contents of pie menu. Add, Remove or Alter items with the GameActivity functions designed for that.
			It is not safe to mess with any pie menu related stuff at any other time. All pie magic must be strictly contained inside OnPieMenu function.
			All changes made to pie menu slices during OnPieMenu are discarded the next time pie menu activates. Every time the pie menu it is good as new and all customizations must be redone.
			
			To add Activity or GlobalScript based pie menu slice you need:
			Define the slice itself in INI as usual, for example:
			
				AddGlobalScript = GlobalScript
					PresetName = Test Global Script
					Description = Test Global Script
					ScriptPath = Base.rte/Scripts/TestGlobalScript.lua
					LuaClassName = TestGlobalScript
					AddPieSlice = Slice
						Description = Global Script Slice
						Direction = 1
						Icon = Icon
							CopyOf = Grapple Gun Stop
						ScriptPath = Base.rte/Scripts/TestGlobalScript.lua
						FunctionName = TestGlobalScriptPieMenuAction
						
			
			Add an OnPieMenu event handler onto your Activity or GlobalScript code which will add the custom slice, for example:

				function TestGlobalScript:OnPieMenu()
					print (self.PieMenuActor)
				
					local activity = ActivityMan:GetActivity()
					local gameActivity = ToGameActivity(activity)
					if gameActivity then
						gameActivity:AddPieMenuSlice("Global Script Slice", "TestGlobalScriptPieMenuAction", Slice.RIGHT, true)
					end
				end
				
			
			Add the global function to handle the pie menu slice activation, as ususal, for example:

				function TestGlobalScriptPieMenuAction(actor)
					print (actor)
				end			
				
			Pretty much the same stuff for MovableObjects, except that the event signature is OnPieMenu(actor), where actor is an actor which opened the pie menu
  • Lua:
[PieMenu]
Slice:
	Enum Direction:
		NONE = 0
		UP = 1
		RIGHT = 2
		DOWN = 3
		LEFT = 4

	Enum Type:
		PSI_NONE = 0
		PSI_PICKUP = 1
		PSI_DROP = 2
		PSI_NEXTITEM = 3
		PSI_PREVITEM = 4
		PSI_RELOAD = 5
		PSI_BUYMENU = 6
		PSI_STATS = 7
		PSI_MINIMAP = 8
		PSI_FORMSQUAD = 9
		PSI_CEASEFIRE = 10
		PSI_SENTRY = 11
		PSI_PATROL = 12
		PSI_BRAINHUNT = 13
		PSI_GOLDDIG = 14
		PSI_GOTO = 15
		PSI_RETURN = 16
		PSI_STAY = 17
		PSI_DELIVER = 18
		PSI_SCUTTLE = 19
		PSI_DONE = 20
		PSI_LOAD = 21
		PSI_SAVE = 22
		PSI_NEW = 23
		PSI_PICK = 24
		PSI_MOVE = 25
		PSI_REMOVE = 26
		PSI_INFRONT = 27
		PSI_BEHIND = 28
		PSI_ZOOMIN = 29
		PSI_ZOOMOUT = 30
		PSI_TEAM1 = 31
		PSI_TEAM2 = 32
		PSI_TEAM3 = 33
		PSI_TEAM4 = 34
		PSI_SCRIPTED = 35
		PSI_COUNT = 36				

	Prop FunctionName, r/o // Global Lua function name to call. Built-in have those empty.
	Description, r/o // Descrption text shown in UI
	Type, r/o // Predefined type of Slice.Type enum. Only makes sense for built-in slices, custom will be PSI_SCRIPTED
	Direction, r/o // Slice direction of Slice.Drection enum.

GlobalScript:
	Prop PieMenuActor, r/o // Actor who opened pie menu

GameActivity:
	Prop PieMenuActor, r/o // Actor who opened pie menu
	Collection PieMenuSlices // List of all slices in the current menu. Do not add or remove items while iterating this
	Func AddPieMenuSlice(description, functionName, direction, isEnabled) // Adds pie menu slice. Notice that the object itself is loaded from those defined in INI's and because pie slices don't have names it's looked up by a combination of description and functionName
	Func AlterPieMenuSlice(description, functionName, direction, isEnabled) // Changes direction or enabled status of pie menu slice. 
	Func RemovePieMenuSlice(description, functionName) // Removes pie menu slice from the menu and returns the removed slice

MovableObject:
	Prop ProvidesPieMenuContext, r/w // If true the OnPieMenu Lua event handler will be called for this object when pie menu activates
  • INI:
GlobalScript:
	Can handle AddPieSlice now

Activity:
	Can handle AddPieSlice now

MovableObject:
	Can handle AddPieSlice now
	Prop ProvidesPieMenuContext // If true the OnPieMenu Lua event handler will be called for this object when pie menu activates

15.06.2019

  • INI:
Entity:
	Prop RandomWeight // Random weight used when picking item using PresetMan::GetRandomBuyableOfGroupFromTech and Random[Class] functions. From 0 to 100. 0 means item won't be ever picked.
  • Lua:
Entity:
	Prop RandomWeight, r/o

17.06.2019

  • INI:
DataModule:
	Prop ScriptPath // Executes the specified script during module load

20.06.2019:

  • Lua:
MovableObject:
	Prop EffectRotAngle, r/w // The effect's (glow's) rotation angle
  • INI:
MovableObject:
	Prop EffectRotAngle
	Prop InheritEffectRotAngle // Whether effect's rot angle should be inherited from parent
	Prop RandomizeEffectRotAngle // Whether effect's rot angle should be randomized on creation
	Prop RandomizeEffectRotAngleEveryFrame // Whether effects rot angle should be randomized every frame

23.06.2019:

  • DYNAMIC BUY MENUS:
	Tutorial:
		With this update it is now possible to manipulate the contents of the buy menu in a dynamic fashion right from your activity or other script.
		You can prohibit specific items without messing with IsBuyable fields, but you can't allow to buy any stuff with IsBuyable = false.
		So, what's the new opportunities:
			Disable everything and allow only specific items. 
			This is managed via AllowedItems list. 
			For example, only allow to buy a Dummy blaster and a Dummy actor (self is current activity)
				
				local buyMenu = self:GetBuyGUI(0);
				buyMenu:AddAllowedItem("Dummy.rte/Dummy");
				buyMenu:AddAllowedItem("Dummy.rte/Blaster");

			Disable some specific items, while leaving everything else buyable.
			This is managed via ProhibitedItems list
			For example, prohibit Dreadnought from buying.
			
				buyMenu:AddProhibitedItem("Dummy.rte/Dreadnought");
			
			Keep an inventory of owned item, and buy these items free of charge if there's a stock of them.
			This is managed via OwnedItems list.
			For example, give a stock of 10 dummies and 10 blasters.
			
				buyMenu:SetOwnedItemsAmount("Dummy.rte/Blaster", 10);
				buyMenu:SetOwnedItemsAmount("Dummy.rte/Dummy", 10);
			
			You can disable any items which are out of stock.
				
				buyMenu.ShowOnlyOwnedItems = true;
			
			Make an item available even if it's out of stock.
			This is managed via AlwaysAllowedItems.
			For example enable Drop shop even if it's out of stock.
			
				buyMenu:AddAlwaysAllowedItem("Base.rte/Drop Ship MK1");
			
			The buy menu is initialized before you're able to enable or disable items and loads default load out in the cart.
			Because of this if you disable items you need to manually reset the cart contents and reload the default loadout,
			or you may end up with prohibited items in the cart.
			
				buyMenu:ClearCartList();
				buyMenu:LoadDefaultLoadoutToCart();
			
			Buy menu does not track the stock of available items while you manipulate it. So you may try to order items which currently out of stock.
			In this case out of stock items (unless they are whitelisted via AlwaysAllowedItems list) will not be delivered. And if a craft is out of
			stock and not whitelisted the delivery will be cancelled.
  • PRESET ENUMERATION:
	Tutorial:
		It is now possible to enumerate the list of all data modules loaded and all of the presets they contain.
		For example, this prints all preset in all the modules:
		
			for m in PresetMan.Modules do
				print (m.FileName)
				for p in m.Presets do
					print (p.PresetName)
				end
			end
  • Lua:
BuyMenuGUI:
	Func AddAllowedItem(string presetName) // Adds an item to the list of allowed items.
	Func RemoveAllowedItem(string presetName) // Removes an item from the list of allowed items. 
	Func ClearAllowedItems() // Clears the list of allowed items
	Func AddAlwaysAllowedItem(string presetName) // Adds an item to the list of always allowed items.
	Func RemoveAlwaysAllowedItem(string presetName) // Removes an item from the list of always allowed items. 
	Func ClearAlwaysAllowedItems() // Clears the list of always allowed items
	Func AddProhibitedItem(string presetName) // Adds an item to the list of prohibited items.
	Func RemoveProhibitedItem(string presetName) // Removes an item from the list of prohibited items. 
	Func ClearProhibitedItems() // Clears the list of progibited items
	Func SetOwnedItemsAmount(std::string presetName, int amount) // Sets the amount of specified items to be owned in this buy menu
	Func GetOwnedItemsAmount(std::string presetName) // Returns the amount of specified items owned in this buy menu
	Prop ShowOnlyOwnedItems, r/w // If set to true only owned items in stock will be shown in buy menu. Overriden by AlwaysAllowed list.
	Func ForceRefresh() // Forces a refresh update of the list of buy menu items
	Func SetHeaderImage(string path) // Changes the header image to the one specified in path
	Func SetLogoImage(string path) // Changes the logo image to the one specified in path
	Func ClearCartList // Clear the cart out of items selected for purchase
	Func LoadDefaultLoadoutToCart // Loads the default loadout to the cart

PresetMan:
	Collection Modules // List of all available data modules of DataModule type

DataModule:
	Collection Presets // List of all presets in the data module. Contains Entity objects, so you'll have to up-cast to get most of the properties
	Prop FileName, r/o // Module file name, like Base.rte
	Prop FriendlyName, r/o // Module friendly name, like Dummy Tech

30.06.2019

  • Lua:
MovableMan:
	Func ChangeActorTeam(actor, team) // Change actor team and update team rosters properly. Remember to switch actor manually if it's player controlled