6000+ New lines of code!
Added
- Powerup groups now stack! Pickup a Cannon powerup and then another Cannon and it increases the level of the powerup like a charge does!
- Completly rewritten the negative active powerup. The negative "Remove 1 Charge" has been removed and >20 different negatives been added! Some pretty effects rich, others very simple.
- Added new Powerup Repair I and II
- Now also supports "The Crash Hard 2.0" Map! (Partially)
Be aware that this map patches/breaks a game own material "lod_vertcol" that the powerup props use. I cant change that.
- Added Frame skipping method to decrease this mods CPU usage if it detects that your game is running poorly. You will notice visible stutter in powerups and its effects below 30 fps. This mod favors your fps over its own neat effects.
- Added alot more new effects and sounds to present and new powerups. This also includes fly by sounds for projectiles! And even your vehicle having noticable recoil with every shot projectile.
- Projectiles no longer fly through the terrain or buildings!
Changed
- Forcefields respect the Trait.Ghosted now. Can drive through a Force fielded vehicle if you are ghosted!
- Completly rewritten all the shockwave active powerups
- Changed most powerups appearances and gave them a new but very similiar color coding
Charge - White
Negative - Black
Offensive - Red
Defensive - Blue
Handicapping - Purple
Utility - Green
Fixed
- Render distance check not running on rotated powerups that have been out of view distance leading to powerups being visible that shouldnt be.
- A fix relating to traffic vehicles not picking up the first powerup they come across if the vehicle was disabled on mod load.
Technical Changelog
This update bumbs the powerups api version to "enums". Old powerups wont load until adjusted to the api changes.
Added
- (Unfinished) Powerup creation Tutorials! 'lua/ge/extensions/powerups/tutorial/*'
- Enums for PowerupGroups, for the onPickup event 'onPickup.Error("Oppsie daisy"); onPickup.Success()'
- Enums for ActivePowerups, for the onActivate event 'onActivate.Error('Any Errpr'); onActivate.Success(data); onActivate.TargetInfo(data, target_info); onActivate.TargetHits(target_hits)'
- Enums for ActivePowerups, for the whileActive event 'whileActive.Continue(); whileActive.TargetInfo(target_info); whileActive.TargetHits(target_hits); whileActive.Stop(); whileActive.StopAfterExec(target_info, target_hits)'
- Powerup group header changed to include wrappers for game objects and other convenience classes and functions
local Extender = require("libs/PowerUpsExtender")
local Lib, Util, Sets, Sound, MathUtil, Pot, Log, TimedTrigger, Collision, MPUtil, Timer, Particle, Sfx = Extender.defaultImports()
local Type, onPickup, createObject = Extender.defaultGroupVars()
- Active Powerup header changed
local Extender = require("libs/PowerUpsExtender")
local Lib, Util, Sets, Sound, MathUtil, Pot, Log, TimedTrigger, Collision, MPUtil, Timer, Particle, Sfx = Extender.defaultImports()
local Trait, Type, onActivate, whileActive, getAllVehicles, createObject = Extender.defaultPowerupVars()
- Added multiple new functions to TimedTriggers: "updateTriggerEvery; newF; getUnused"
- Bound the charge increase to the Type.Charge (the powerup group itself should therefore no longer increase the charge but just return onPickup.Success())
- Added smart self profiling and frame skipping. This decreases the render update rate, but same time wont affect your physics tick since it keeps track of the stepped over delta times.
- Added small wrapper for the game own getAllVehicles(), that only returns non disabled vehicles. This is relevant for pooled traffic vehicles, essentially preventing any powerup from targeting and interacting with "invinsible vehicles".
With this update there is also a new "set and forget" methology.
This means the creation of objects that the creating code (can) forget about (the pointers to it vanish and cannot be retrieved again) but that handle themself according to given condiditions and then self remove. Only compatible with objects that have the :isDeleted() method.
- Added wrapper for the game own "createObject" function. Essentially safe guards unsafe calls to game engine objects, this way preventing game crashes and allowing the use of "set and forget" systems - adds the :isDeleted() method to all created game objects through it. Should be compatible with all objects (TSStatic, emitters etc)
- Added "set and forget" wrapper for the game own particle emitter. eg.
Particle(particle_name, pos_vec)
:active(bool)
:velocity(double)
:selfDisable(ms) -- disable after this
:selfDestruct(ms) -- then despawn after this
:bind(obj, ms) -- self disable if bound object is deleted, self delete after
or alternate
:bind(obj) -- self delete directly if bound object is deleted
:follow(obj [, ms]) -- keep inheriting position of obj
-- for custom logic
:followC(obj [, ms], function(self, obj, emitter))
:attachC(function(self, emitter))
- Added "set and forget" wrapper for the game own sfx emitter eg.
Sfx(file_path_to_sound, pos_vec)
:is3D(bool)
:volume(double)
:minDistance(meters) -- full volume inside
:maxDistance(meters) -- fades out until this
:isLooping(bool)
:bind(obj)
:follow(obj [, ms])
or alternate
:followC(obj [, ms], function(self, obj, sfx))
:attachC(function(self, sfx))
:spawn() -- spawns the sfx, certain settings cannot be manipulated after spawn
- Added :smart() method to Sounds lib, that chooses to either play the sound in GE or in VE depending on if the player is spectating the given vehicle
- Added :smartSFX() method to Sounds lib with same behaviour as :smart() but instead it creates a Sfx emitter if vehicle is not spectated. Neat for playing sounds that can be heared over custom distances.
- Added raycastAlongSideLine(from_vec, to_vec) to MathUtil that essentially just checks if there is a collision with a static between the two positions. Uses the game own "castRayStatic" function.
Changed
- Removed the :start() method from the PauseTimer to fit it along the game standard
- Disabled the "compileLua" server only lib
Fixed
- Oversight in Extender.cleanseTargetsWithTraits() that lead to the return of holed arrays {vehicle_1, nil, vehicle_3}
- Issue with the TimedTriggers removing wrong triggers when the called trigger removed itself and created another
And much more. All changes can be found here
Dismiss Notice
In the upcoming weeks mod approvals could be slower than normal.
Thank you for your patience.
In the upcoming weeks mod approvals could be slower than normal.
Thank you for your patience.

Alpha Powerups. The Police/Military Ordnance Update! 0.5.3
Simply put.. Powerups!