Releases: Taureon/aps-plus-plus
v1.0.0-beta.8
Additions
-
Added color support for
drawText()
.- You can add color tags to text that gets rendered.
- A color tag consists of a section sign (
§
) at each end, with a "color value" in the middle. - You can have a color tag with nothing in it (
§§
) and it will render the section sign normally. - A color tag does not get rendered and makes text after it have a specific color.
- A valid color value can either be a "color code", exactly like the ones you see in definitions
COLOR: 3
. - It can also be a CSS Color Value.
- And if you want it to reset to the "default color", then you can set it to
reset
. - Example which makes "World" the animated trans color:
Hello §37§World§reset§!
- Example which makes "Gradient" in the gradient colors from red to yellow:
§#ff0000§G§#ff2000§r§#ff4000§a§#ff6000§d§#ff8000§i§#ff9f00§e§#ffbf00§n§#ffdf00§t
- NOTE: As a side effect of this feature, rendered text may be moved by SOME PIXELS in slightly different spots, but it should hardly be noticable.
- Gradient support could be added as soon as it is figured out how to represent them in text.
-
Added a simple status effect system.
- Added
StatusEffect
as a globally accessible class. - Arguments:
duration
(number, required),effects
(object, optional),tick
(function, optional) duration
: effect duration where30
equals1 second
.multipliers
: key-number object with the following (optional) attributes:acceleration
,topSpeed
,health
,shield
,regen
,damage
,penetration
,range
,fov
,density
,stealth
,pushability
,size
.tick
: function with the entity the effect is on as the argument.StatusEffect
s should be set withEntity.addStatusEffect(StatusEffect)
.- If an entity gets a new status effect, the
newStatusEffect
event is emitted with theStatusEffect
in the callback as the argument. - If a status effect expires, the
expiredStatusEffect
event is emitted with theStatusEffect
in the callback as the argument. multipliers
multiplies the body attributes by their number. (example:{ fov: 2 }
doubles your fov)tick
runs once a game tick if the entity is activated.- Multiple
StatusEffect
s can stack seamlessly. - For an example of an addon that uses
StatusEffect
s, check out the Effect Roller Addon.
- Added
-
Added
ON_FIRE
gun attribute, which runs the given function when the gun fires.- Function argument: An object with these attributes:
body
,gun
,masterStore
,gunStore
body
is the entity that the gun belongs to. (If the gun is on a turret, it picks the turret's master instead)gun
is the gun itself.masterStore
is a storage object that persists betweenON_FIRE
function calls.gunStore
is a storage object likemasterStore
, but it belongs to the gun instead of the master.- For an example implementation, check out "Switcheroo" in the Fun menu.
- Function argument: An object with these attributes:
-
Added
LEVEL_CAP
entity attribute, which overwritesc.LEVEL_CAP
specifically for that entity. -
Added
REPL_WINDOW
to config.js.false
by default, if set to true, allows you to type js code in your terminal window and execute it.
Fixes
-
Gun
s now have an unique id, likeEntity
s. -
Fixed an object reference bug related to
Gun.settings
. -
Fixed
io_wanderAroundMap
'slookAtGoal
setting to actually look at the goal instead of staring at the bottom right. -
Fixed switching to Developer class resetting your score/level.
RESET_UPGRADES
now only resets your stat upgrades, returning your points.RESET_UPGRADES
happens when you press the dev key.RESET_UPGRADES
is not on "Developer" anymore.
-
Fixed the issue with
io_nearestDifferentMaster
and dominators.
v1.0.0-beta.7
Additions
- Added "Weirdly defined Auto-Basic" to the "Fun" menu to show off the new features shown below.
- Added Assembler.
Changes
- Updated
combineStats
facilitator function to be backwards compatible for "stat arrays". - Updated
POSITION
for turret and gun definitions.- Can now be objects with properties instead of arrays of numbers.
- For guns, the properties are
LENGTH
,WIDTH
,ASPECT
,X
,Y
,ANGLE
andDELAY
. - For turrets, the properties are
SIZE
,X
,Y
,ANGLE
,ARC
andLAYER
. - If a property of the object is not defined, it will assume a default value.
- The default values consist of the standard Basic's barrel, if defined as a barrel's
POSITION
. - The default values consist of the standard auto turret with
LAYER
andANGLE
set to0
, if defined as a turret'sPOSITION
. - Using objects for
POSITION
is optional, so you don't have to rewrite your thousands of lines of tank code.
- Updated
shinySentry
definition to be a triangle instead of a circle.
v1.0.0-beta.6
Additions
- Added
BOT_XP
config setting, which determines how much xp the player-bots get each second.125
by default.
- Added a 3rd page to the Food Generators.
- Features a 3 dimensional list of labyrinth food.
- Added
SPAWN_CLASS
config setting, which determines the class that player(-bot)s spawn as."basic"
by default.
- Added
RECOIL_MULTIPLIER
as aBODY
attribute, which multiplies the knockback that guns and turrets give by that amount. - Added
STACK_GUN
gun property, which makesio_stackGuns
ignore the gun if it is set to false.true
by default.
- Added "Developers" category to "Bosses" menu.
- Currently only has Taureon and TGS.
- Functions more like a credits page.
- Added a Dreadnoughts V1 example addon.
- Serves as an example "content pack" that addons can add.
Changes
- Updated Domination gamemode.
- Works with FFA now.
- Updated Siege gamemode.
- Added all celestials and terrestrials as enemies.
- Added the rogue celestials as friendly boss choices.
- Friendly bosses are no longer blue now.
- Updated the example addon.
- Changed body stats, added extra skill on upgrade, make it not crash your game because now it doesn't reference the now deleted
Class.memes
instead ofClass.fun
.
- Changed body stats, added extra skill on upgrade, make it not crash your game because now it doesn't reference the now deleted
- Updated Definitions.
- Updated
COLOR
: If your string color does not return a color, it will think your input is#RRGGBB
. - Updated
PARENT
: You don't need it to be an array anymore, you can now just doPARENT: "genericTank"
. - This means
getColor
in the client no longer returns#00000000
for invalid colors.
- Updated
- Updated Conqueror's Pounder barrel to be a Destroyer barrel.
- Renamed the "Boss" team and "Arena Closer" team in the team picker to "Enemies" team and "Room" team to better reflect their teams' names in the code.
- Removed
BOTS
definitions from the default gamemode configs to avoid confusion.
Fixes
- Fixed "chat on death" crash.
v1.0.0-beta.5
-
Reworked Food Generators.
- Generator definitions are now algorithmicly generated.
- Features 46 food types, 42 gemmed relics and 3 enemies instead of just 4 things.
- Traversable food matrices like in arras.io's shiny menu, except its easier to understand where you're going.
- Bottom right upgrade swaps between not-gem-relic and gem-relic matrices.
-
Added Trans Food Group.
- Can (albeit very unlikely) naturally spawn.
-
Added Relics.
- Features empty relics aswell as gemmed relics.
-
Added Tesseract.
- Ultimate Extradimensional Food, it goes even beyond the platonic solids...
- Added so there is a thing in the relic row and the extradimensional column.
-
Added
INDEPENDENT_CHILDREN
gun attribute.- Spawns
TYPE
as an independent entity instead of a projectle.
- Spawns
-
Made the skill menu go back all the way even if one of the max stat caps is 255.
-
Resolved the Constructor tank name conflict.
-
Fixed an issue with the default token values trying to make you a tank that doesn't exist, and crashing the server.
v1.0.0-beta.4
-
Added the ability to communicate in game.
- Enter to type and send a message.
- When messages vanish can be set in
config.js
withCHAT_MESSAGE_DURATION
, defaults to 30000 milliseconds (30 seconds). - Comes with a basic moderation addon.
- The basic moderation addon adds:
- A simple rate limit if you send chat messages too quickly,
- A character limit,
- And bad words prevention
- The character limit can be modified in
index.html
andconfig.js
and you can toggle swearing in config - It lets you spam if you have
allowSpam
in your permissions. - It lets you swear if you have
allowBadWords
in your permissions.
-
Added
Events
attribute to the Addon Argument Object.- Includes 2 events:
spawn
,chatMessage
spawn
event fires when an entity of any kind spawns.spawn
's callback argument is the entity that spawned.chatMessage
event fires when a chat message is received from the client.chatMessage
's callback argument is an object which looks like this:{ message, socket, preventDefault }
.message
is the text message that is sent.socket
is the socket object (which containssocket.player
and that containsplayer.body
which is the player entity).preventDefault
is a function that if called, prevents the message from being sent out to everyone.
- Includes 2 events:
-
server/config.js
has been documented and commented.- Settings that do NOTHING have been removed.
- Each setting has been commented.
-
Added
io_stackGuns
controller.- Rotates itself to make the gun that is about to fire aim at
target
. - Has a
timeUntilFire
option, which determines how close a gun has to be to firing before the tank spins for it. - If it is 0, which it is by default, it doesn't do that check.
- Rotates itself to make the gun that is about to fire aim at
-
Updated Siege.
- Added Elite Trap Guard, Elite Spinner, Nest Warden, Nest Guardian and Kronos.
- Fixed a very specific wave generation crash edge case.
-
Fixed YET ANOTHER bug in
domination.js
.- Dominators turn to
TEAM_ROOM
if not killed by a player. - Fixes arena closers crashing the server.
- Dominators turn to
-
Cleaned up some code.
- General smaller code changes.
- Made
canvas.js
'sthis
reference less confusing.
v1.0.0-beta.3
-
Added
TURRET_FACES_CLIENT
- Forces your entity to face the cursor without delay, Use when using turrets, like
TYPE: ["dreadnoughtLayer2", {TURRET_FACES_CLIENT: true}
- Forces your entity to face the cursor without delay, Use when using turrets, like
-
Added support for using strings in the
COLOR:
property- example:
COLOR: 'teal'
- example:
-
Added
infiniteLevelUp
permission topermissions.js
.- Bypasses
SKILL_CHEAT_CAP
.
- Bypasses
-
Added a Window Title.
APS++ Game Server Instance
by default, can be changed in config asWINDOW_TITLE
.
-
Added
Config
attribute to the Addon functon argument object.- Allows you to change the server configuration if need be.
-
Added
getWeakestTeam
,getTeamName
,getTeamColor
andisPlayerTeam
as global functions that you can reference in the server.getWeakestTeam
gets the team with the least amount of bots/players.getTeamName
gets a team id and turns that into a team name. (-1
=>"BLUE"
)getTeamColor
same thing but for color ids.isPlayerTeam
returns true if the id is below0
and above-9
, which corresponds to the allocated team ids for all 8 teams.
-
Added
TEAM_BLUE
,TEAM_GREEN
,TEAM_RED
and so on for all the teams which are intended to have more than 1 entity in them.- Gets rid of magic numbers, makes code easier to understand.
- Also breaks the confusion between
-100
and-101
which were used interchangibly in multiple places. TEAM_ROOM
has been added for rocks, roids, walls, ACs and the moon.TEAM_ENEMIES
has been added for food, crashers, sentries, bosses, etc.- All 8 player teams are added.
-
Added auras.
- 2 aura related debug tanks in the Memes category.
- Uses a modified version of @DogeisCut's auras.
- Comes with a new facilitator function:
addAura
- Comes with a new movement type:
withMaster
-
Added
BORDERLESS
attribute which removes shape or gun borders.- Can be applied to both guns and entities.
-
Added
DRAW_FILL
attribute which fills a shape or gun when drawn.true
by default.
-
Added
DRAW_ABOVE
which makes a gun appear above the player but below top turrets. -
Added
LEVEL_SKILL_POINT_FUNCTION
.- Makes the entity use a custom LSPF then the one in the configuration file.
-
Added
RECALC_SKILL
.- Sets the spent and usable skill to zero.
- The goes from 0 to current level and calculates how many points it would have gotten.
- Pairs well with
LEVEL_SKILL_POINT_FUNCTION
.
-
Added
EXTRA_SKILL
.- Adds extra skill points to spend.
- Runs after the above two new attributes.
-
Added the option for
ALPHA
attribute to be a dual number array likeINVISIBLE
.- First number defines the maximum alpha (max visibility).
- Second number defines the minimum alpha (min visibility).
- Also fixed the invisibility updating on the server to not have an alcoholism problem anymore.
-
Added
run.sh
in the same directory asrun.bat
.- For the Linux Master Race™.
- Also works on macOS.
-
Added
package-lock.json
to.gitignore
. -
Set
Error.stackTraceLimit
toInfinity
.- Error logs now show more of where the error came from.
-
Fixed
DESTROY_OLDEST_CHILD
rapid firing after hitting the max children limit. -
Fixed base protectors.
- Required a better turret reload patch.
- Side effect is that stacking turrets now does not make them shoot faster anymore.
-
Completed the new definitions system.
- Added
flattenDefintions
to the config. - Appends an entity's
PARENT
properties (the properties of the referenced tanks) to the entity. - Also does reference checking, which can help with spelling mistakes and missing definitions.
- Facilitator
combineStats
accepts objects instead of number arrays. - gValues have been updated to compensate.
- You can now do simpler things like
combineStats([g.drone, g.summoner, { size: 0.8 }])
. - Includes a new way to reference other entities' definitions!
- String Definition References can now be used instead of getting an attribute of
exports
. PARENT: ["genericTank"]
,TYPE: "autoSmasherTurret"
,TYPE: ["sunchip", { LABEL: "Square" }]
- You can still reference as an exports property instead for backwards compatability.
⚠️ Facilitator functions don't work with string references.⚠️ Old definitions.js file has been deprecated, but can still be accessed in 'live\class.js'.
- Added
-
Updated
webServer.js
.- Added a check for if you're using localhost as the
"host"
config property. - If you are, it checks if you added a port and if that port equals the
"port"
config property. - It warns in server console if the check fails.
- Added 2 mime types it checks for:
image/png
,image/x-icon
. - Now does not send redundant information anymore.
- Added a check for if you're using localhost as the
-
Updated how in-game changelogs work.
- Instead of a .md file, it is a .html file.
-
Updated gamemodes.
- Siege: Now roughly tries to balance out the times specific bosses spawn, so it won't think that a sorcerer equals a nest keeper in strength.
- Manhunt: Shows leader on minimap. As a requirement to make this change possible, the
alwaysShowOnMinimap
property has been added to theEntity
prototype. - Growth: Expanded leveling limit + You can now get max upgraded auto smasher!
- Domination: Fixed the mountain of glitches, bugs and crashes that it has.
-
Updates the Skill Upgrade UI.
- Now does not keep open anymore if you are unable to spend more skil points.
- Added more spacing between the vertical dividers.
- made the "blocked off area" with the number on it be a consistent size.
-
Moved the contents of the
bringToLife()
function to theEntity.life()
method, which was the only placebringToLife()
was called. -
Renamed skill cap related configs to level caps.
-
Replaced instances of
Array.forEach()
andloopThrough
with theirfor
loop equivalent. -
Removed bleeding from the skill system.
- It did NOTHING.
-
Removed dead/commented out code in several places.
-
Removed redundant global functions.
rotatePoint
it was used once and only on commented out code.isEven
i don't have to explain this one.loopThrough
for loops... they exist...getTeam
it was not clear what it does.
-
Removed
server\modules\debug\antibot.js
because it is stupid. -
Removed
secondaryGameMode
from configurations. -
Many minor less relevant improvements in a lot of places.
-
Added support for hsl adjustment of base colors, example in exports.basic
-
Added color mirroring for barrels and turrets
- Copies the tank’s base color
- Allows for modifications per instance of the color
- Works for nested turrets
- Set COLOR or COLOR.BASE to -1 to activate
-
The color of a projectile can now be set in the gun’s PROPERTIES, not just in the projectile export itself
v1.0.0-beta.2
- Added a very primitive "Addon API" that gives more extensive control of the definitions.
- Made a new folder:
definitions/addons
. - Addons are
.js
files, that export a function, which takes an object with a property calledClass
as the argument, which contains all the definitions after merging the groups. - Comes an example addon that is disabled by default in the code if you had difficulty understanding the above line.
- The addon api will probably come with more features later on.
- Made a new folder:
- Added
rock
,stone
,moon
,gravel
andwall
tomisc.js
.- I wonder which classes are still missing from the groups.
- Turret stats now sync properly with their tank they're on.
- How @frostbvte even managed to find that fix I have no clue.
- Changed the tab icon and the center image to this server's icon as a locally stored
.png
and.ico
instead of files on the arras.io webserver. - Deprecated Taureon's Arras.io Server.
- Added 3 lines to the spawn message of the game server that tells you to visit the aps++ repository instead.
- Added a link to the webpage that redirects to the repository.
- Commented out the
<script>
tag that automatically redirects you to the arras.cx client. - The optimisations in the server are already included in aps++.
- The exclusive content will be an aps++ addon.
Note from Taureon: I do not want aps++ instances to depend on 3rd party servers to function. Eventually, I will attempt to untie the client from Google Fonts too while keeping the Ubuntu font. I want aps++ to run without errors, even if the internet only contains aps++ players and instances. It is more difficult to test, secure and archive your product if it relies on something that you realistically do not have any control over, and you can easily get shut down or denied access if they wanted to, at any moment.
v1.0.0-beta.1
I've started putting Taureon's changelogs up here. For earlier updates, join the Discord.
Since this push of 15 updates was accidental, it may not be entirely polished.
- Added Sphere, Tetrahedron and Octahedron as Extradimensional Food.
- Not in
definitions.js
but inmodules/definitions/groups/food.js
- Not in
- Added Vulture
- Upgrades from Tri-Angle branch.
- Added small grouping guide to
definitions.txt
. - Added groundwork for "definitions flattening".
- "Flattening" refers to removing
PARENT
attributes and applying the parents' attributes to the definition themselves, if it's not overwritten later on. - You can toggle it in config, if your code depends on
PARENT
s for some reason. - Should improve performance by getting rid of redundant attribute settings.
- "Flattening" refers to removing
- Made
config.js
easier to read. - Fixed a bug that makes turrets shoot twice as fast.
- Credits to @frostbvte on Discord for finding this one!
- Updated
g.auto
's reload to be double too.
- Fixed a stat visual bug.
- Made the advanced collision function easier to read.
- Removed the custom Ironclad boss.
- Finished the definitions flattening feature from last changelog.
- Also added error handling for people who attempt to get a definition that does not exist.