Asura is counting the days to meet all Steam players in the mirage. Equally impatient is Mary, the bartender, who serves drinks to warriors before they start their adventures of slaying foes.
Quan has taken the initiative to show you a tour around Mary's nook. Select your player character, interact with the bar, and choose "Grab a drink".
Here is menu. The first one is on the house! Don't forget to warm yourself up before your epic battle.
You know what people say, "there is no free lunch", which also applies to Mary's little business. Each drink consumes collectibles ingredients in the dungeon, and if you don't have enough stash of them, the price (Soul Stones) is gonna be higher!
On the other hand, if you have extra stock of ingredients, you can sell them out in exchange for Soul Stones. Click the crate button on the bottom-right corner for more info.
A maintenance for the update will be performed at UTC 7:00 March 17th Scheduled maintenance time will last about 60 minutes. Please note that the end time may vary depending on the situation. Thanks for your understanding!
If you encounter a bug while playing our game or have any suggestions, please feel free to contact us by following ways: Email: afksummoners@gmail.com Facebook: AFKSummoners FB Group: AFK Summoners Group
A new way on how to enhance your Character's overall performance!
Collect tickets and choose your preferred Character Parts!
Event Period:
03/16 ~ 04/12 23:59 (PDT)
Event Mechanics:
- After a match, users will get a Parts Collection Ticket - Only 1 Ticket per Match will be given - Maximum of 20 Parts Collection Ticket per account - Ticket will be sent via Gift Box
Note:
Part Exchange Ticket will also be available in our future Events.
As of the moment, only Normal Characters are allowed to use Parts.
Choose your Team and wage war against other teams in the battle for supremacy in FS2! Start the War Event commences!
Event Period:
03/16 00:00 ~ 04/12 23:59 PDT
Event Details:
Join one of three different teams, Underdog, Number Play, or Mystery and challenge the remaining ones to see which team is the best in FS2!
H.O.F:
The people in HOF is a tribe team from the province of FS City that focuses on speed and agility. Make no mistake belittling them. You have been warned!
GOAT:
Defense is the best offense they say. And this team have undoubtedly crafted their skills to be considered as one of the best team there is. Be sure to keep an eye on 'em!
MVP:
The team that consist of different strategies that no one has ever seen before. Your basketball knowledge will be tested every time you face this team!
After you have chosen which team you want to join, head on over and choose which area in the strategy map should you play in!
Each win will increase your victory points. The crew with the highest victory points will be the one who will own the said area.
Each game you play, whether win or lose will award you with a League Coin, you can exchange the League Coin for various rewards!
These are the rewards for placing first, second, and third place overall
To try it out right click on the game in steam go to 'properties' then pick the 'beta' tab and pick 'beta' in the dropdown (make sure the game is not running first).
Over 100% faster rendering on PC with high numbers of small units on screen (runs smooth in tests with 10,000+ units on-screen)
New unit - Heavy AA Ship (by uber)
Overrides for each players in multiplayer and advanced skirmish ---AI difficulty can now be set differently for each AI player ---Starting units can be different for each player, useful for faction selection in mods. ---Unit color can be overridden for each player
Desktop version: Experimental -teamshaders commandline switch will use shaders for team coloring reducing memory use of mods with large images, and lag when first applying coloring.
Moddable resource streaming style systems like in TA, C&C, etc.
Modding features and changes:
Moddable resource streaming:
--[core]streamingCost - Like price but paid for overtime while this unit is being queued or built. Construction or queue is paused if resources run out while building.
--[action]streamingCost - Like price but paid for overtime while action is queued, queue is paused if resource runs out. Flags can be used to pause and unpause from triggers.
--[core]switchPriceWithStreamingCost:boolean/[action]switchPriceWithStreamingCost:boolean shortcut to set streamingCost to price value and clear price.
--Add [core]switchPriceWithStreamingCost to all-units.template to quickly switch a mod over to streaming resources.
Dynamic logic boolean overhaul, with new dynamic number, unit, string types
Comparison support added to logic booleans: == != < > >= <=
--Instead of “autoTrigger: if self.energy(greaterThan=100)” it's possible to do: “autoTrigger: if self.energy > 100”
Logic boolean/number maths: - + * /
-Eg: “autoTrigger: if 2*self.energy + parent.energy-10 > 50”
-Dynamic text support has been added to [action]text, [action]description, [action]setUnitMemory, [action]showMessageToPlayer, [action]showMessageToAllPlayers, [action]showMessageToAllEnemyPlayers, [action]showQuickWarLogToPlayer, [action]showQuickWarLogToAllPlayers, [action]debugMessage
Multi line support has been added and can be used on any key with 3 quotes to start and end. Eg: copyFrom:""" ROOT:a.ini, ROOT:b.ini, ROOT:c.ini """
[core]defineUnitMemory creates variables for custom storage unique to each unit.
-Eg [core]defineUnitMemory: boolean nukeActive, boolean laserReady, float experience, unit nextTarget, unit homeBase, string customText
New logic boolean function: readUnitMemory(name:string, type:string{boolean,unit,float,string}, [default]) eg: parent.readUnitMemory('nukeCountdown',type='float'). Default is used if that unit memory doesn't exist or the type in the saved data is wrong.
New logic boolean function: memory(name) which is a shortcut to read the current unit with current defineUnitMemory types.
New resource shortcuts. eg: self.resource.credits and self.resource('credits')
Added [action]switchToTeam: {logicNumber}
New logic boolean/number/unit/string functions:
-self.maxHp()
-self.teamId() - Return team id of unit or market. Starts at 0. (but -1 for a neutral team)
-self.x() - Return x location on map. Available on units and markers.
-self.y() - Return y location on map. Available on units and markers.
-self.z() - Return z/height on map. Available on units and markers.
-self.dir() - Return direction. Available on units and markers.
-self.priceCredits() - Credits this unit cost
-distance(x1,y1,x2,y2) - Distance between points. Slower than distanceSquared.
-distanceSquared(x1,y1,x2,y2) - Faster distance, but result is squared
-distanceBetweenSquared(unit1, unit2) - Bit faster than distanceBetween
-int(x) - Removes decimal places from a number. int(4.2) == 4
-select(bool, textA, textB) - returns textA if bool is true otherwise returns textB
-debug(logicBoolean) - Returns a text string helping to explain the reason for the current result. Can see into nested logic, comparisons, and operators.
-str(x) - Convert a number, unit or boolean into a string: eg str(self.energy)+'x' == '100x'
-createMarker(x,y,[height],[teamId],[dir]) - Returns a temporary unit marker. Can be saved in memory or used as a reference for move orders, etc. Doesn't affect game state. Automatically removed if not referenced anymore.
-globalSearchForFirstUnit(withTag=x, relation) - Returns first unit found matching the filter
-null/nullUnit - A null/missing unit. Useful in comparisons eg: self.customTarget2 != null
New logic boolean/unit reference system:
--Chaining those all functions is supported eg: self.attachment(withTag='x').lastDamagedBy.getAsMarker()
--self - This is the existing reference for the current unit (was the only option in past versions). Eg autoTrigger: if self.energy > 100
--attachment([slot], [withTag])
--attacking - Current target this is attacking, might not be the current waypoint target.
--lastDamagedBy - Last unit that attacked this.
--parent - The transporter or attachment parent. Eg autoTrigger: if parent.energy > 100
--activeWaypointTarget - Current active waypoint target. Includes attacking, transporting, repairing, etc.
--customTarget1 - Custom memory, defaults to the unit that created this unit.
--customTarget2 - Custom memory, defaults to null
--nearestUnit(withinRange=500, withTag='x', relation='any') - Search for a unit, slow, not recommended in autoTriggers
--getAsMarker() //creates a temporary marker at the position a unit is right now. Markers are fast to create and automatically removed when no longer needed. Is not linked to any unit and still exists when the unit dies, and stays the same when source moves. Eg: lastDamagedBy.getAsMarker() - to remember location of last attack. Markers store x/y/height/dir/team data.
--getOffsetAbsolute([x],[y],[height]) - Returns marker with absolute offset
--getOffsetRelative([x],[y],[height],[dirOffset]) - Returns marker with relative offset
--thisActionTarget - Used in inside actions to get action target, location, auto trigger event source, etc. Will be set as a unit, marker, or null depending on the action trigger source. Note: Will always be null when used on UI text fields, etc as it's only valid on the action event. Save the value to memory if you want it shown in the UI.
---thisActionTarget examples:
---fireTurretXAtGround: mainGun (thisActionTarget==Marker with ground location)
---autoTriggerOnEvent: tookDamage (thisActionTarget==Unit that caused damage)
---autoTriggerOnEvent: killedAnyUnit (thisActionTarget==Unit that was killed)
---autoTriggerOnEvent: transportingNewUnit (thisActionTarget==Unit that was transported)
---alsoTriggerAction: x (thisActionTarget==Same as original action)
---[turret]onShoot_triggerActions: x (thisActionTarget==Target that was shot at)
---takeResources_triggerActionIfAnyCollected: x (thisActionTarget==Target with resources)
---addWaypoint_triggerActionIfMatched: x (thisActionTarget == Marker for move/Target for attack, etc. Note: use addWaypoint_maxTime:0 if you want to search only)
customTarget1/customTarget2 added to all units. Can store a reference to another unit. customTarget1 defaults to the unit or building that created the unit. Useful for things like aircraft carriers, infantry squads, teleporter links, etc. ([core]defineUnitMemory can also be used to add more)
-eg: setResourcesWithLogic: hp=self.parent.hp - 10, energy = self.energy / 2
-eg: addResourcesWithLogic: hp = select( self.parent.energy>5, 10, 20 )
Added [core]autoTriggerCheckRate and [action]autoTriggerCheckRate - with the options everyFrame (default), every4Frames, every8Frames
--Note: all triggers regardless of check rate are checked when first created and after an auto trigger cooldown. Checks rates every4Frames/every8Frames are randomly spread out between units so they don't all happen on the same frame, making it smoother. Adding [core]autoTriggerCheckRate:every8Frames to all-units.template could have a large performance boost for mods with complex autoTriggers. Often x8 better performance from autoTriggers. In rare cases some triggers might still require checking every frame so this is not a default.
New unit produce/spawning parameters:
--Added spawnSource(unitRef) - Effects location and team eg: [action]spawnUnits: tank(spawnSource=memory.lastLocation)
--Added copyWaypointsFrom(unitRef) - Copies all waypoints on target to created units. Eg: spawnUnits: tank(copyWaypointsFrom=self)
Modulus operator (%) added to ${} template blocks
[turret]unloadUpToXUnitsAndGiveAttackOrder - Now unloads units at turret location (testing needed)
Added [core]borrowResourcesWhileBuilt - like [core]borrowResourcesWhileAlive but doesn't take effect till built. Mostly useful for buildings like houses that have negative resources to add to a unit cap, etc.
Added [action]takeResources_includeReference - unit ref - eg: [action]takeResources_includeReference: self.lastDamagedBy
Added [action]addWaypoint_target_fromReference - unit ref
Added [attack]shootDelayMultiplier default 1
Added [action]setUnitStats allows changing of a select number of fields dynamically without converting. Supports =/+=/-=, with dynamic maths/logic. Changeable fields: maxHp, hp, maxShield, shield, shieldRegen, maxEnergy, energy, armour, mass, shootDelayMultiplier, moveSpeed, maxAttackRange. Eg: setUnitStats: maxHp+=self.energy+100, hp+=50, shieldRegen=0.5
Added [action]resetUnitStats (boolean)
Added [action]convertTo_keepCurrentFields - Don't change these fields when converting, useful with setUnitStats (Allowed fields: maxHp, maxShield, shieldRegen, maxEnergy, armour, mass, shootDelayMultiplier, moveSpeed, maxAttackRange.)
Added [action]whenBuilding_temporarilyConvertTo_keepFields - Don't change these fields when using whenBuilding_temporarilyConvertTo (both to and from), useful with setUnitStats.
Added [attack]shootDamageMultiplier
Added [projectile]trueGravity that affects heightSpeed. [projectile]gravity only affected height directly so it had no acceleration.
setUnitStats can now dynamically change shootDamageMultiplier
setUnitStats can now dynamically change maxTurnSpeed
Added [action]switchToTeam: {logicNumber}
Added 'eventSource' for use with autoTriggerOnEvent. (The thisActionTarget with autoTriggerOnEvent examples in 1.15p1 changelog are incorrect. Use eventSource instead for those.)
Added a @memory shortcut in [core] for defineUnitMemory to create a single memory variable. This should work better with templates and copyFrom logic as a single defineUnitMemory gets overridden. Example: @memory customText:string
Added [action]fireTurretXAtGround_withTarget (Takes unit or marker reference)
Added [effect]pivotOffset - like dirOffset but also rotates all relative keys, and child effects spawned
Added [effect]pivotOffsetRandom
Make fogOfWarSightRange unit stats changes refresh fog
All random logic is more random and a shared random seed is created for each match, for random starting spawns, resource placements, etc.
Added rnd(min,max) logic boolean which generates a synchronised random float. eg: [action]requireConditional: if rnd(0,1)<0.6 (for a 60% chance of action working)
Added lowercase(string) and uppercase(string) logic functions
Added cos() and sin() logic booleans
Added direction(x1,y1,y2,x2) and directionBetween(unit1, unit2) logic functions
Added enteredTransport, leftTransport events to autoTriggerOnEvent. With eventSource being the transport.
Fixes for copyWaypointFrom not working for self with unitsSpawnedOnDeath
Fix unloadUpToXUnitsAndGiveAttackOrder not working well with attachments
--Use autoTriggerOnEvent:newMessage(withTag=x) to read these messages on the targeted unit, and the logic function eventData(name, type, [default]) to read the sent data.
--Use autoTriggerOnEvent on tookDamage supports optional (withTag=x) parameter, which reads projectile tags. Eg: autoTriggerOnEvent:tookDamage(withTag=fire)
readUnitMemory/eventData with a type string will now auto convert any non-string data for easier debugging
nearestUnit() now has a default range of 500 (instead of 0)
takeResources_includeReference, setCustomTarget1/2 supports dynamic references (eg from memory, logic, etc)
Added [core]nanoReclaimSpeed - how fast a builder reclaims a normal unit (defaults to nanoRepairSpeed*5.1 to match behaviour of older versions)
Added [core]resourceReclaimMultiplier - how fast a builder reclaims a resource (defaults to 1)
Added [core]nanoUnbuildSpeed, how fast a builder reclaims an incomplete building (defaults to 1)
Show warnings to modders if canNotDirectlyBeAttacked starting unit causes instant defeat
setUnitStats can now dynamically change fogOfWarSightRange
setUnitStats can now dynamically change nanoRange
Added self.isInMap()
Added game.mapWidth() and game.mapHeight()
Added [resource]iconImage - Show an image with this resource in HUD and text
Added [resource]displayColorUseInText (default true) - Shows resource color in action description
Added [resource]appendResourceInHUD - will stack another resource after this on in HUD. Uses the colors and icons of the target resource and can be stacked.
Added [resource]displayPrefixInHUD - text to show before resource value, replaces resource name and removes ‘: ‘ useful with appendResourceInHUD
Added [resource]displayPostfixInHUD - text to show after resource value
Added [graphics]showShotDelayBar (default true) - Used to hide calldown of slow firing turrets
Clearer error message when dynamic logic is used on a static function parameter
getOffsetAbsolute() and getOffsetRelative() now support dynamic parameters
Added selfRegenRate to setUnitStats
Added onlyIfEmpty to unitDetect map trigger
Added [resource]displayTextAppendResourceWithGap - default false. Adds space between resources when putting unrelated resources on the same line.
Added [resource]appendResourceInHUD_whenThisZero - default true. False to allow appended resources like max values to be hidden with the parent resource.
displayTextAppendResource now automatically breaks lines if they are too wide for the screen. Useful for small displays or phones in portrait mode.
Added support for modulus in dynamic numbers
Added self.isReversing()
Made [resource]displayPos work with global resources. Defaults to 0. (It didn’t do anything before, wasn’t meant to be documented)
Fixed [resource]displayWhenZero so it shows for resources that haven’t been used yet
Changes and fixes:
Fix displayWhenZero was still not working if player had no custom resources of any type
Better minVersion mod checks - fix messages and edge cases
Fix setUnitStats selfRegenRate being rounded
Fix crash importing files that are still downloading in browser
Fix crash loading save file
Fix crash starting game from save file that fails to be read
Fix crash on game start in some cases if replay file fails to be created (normally from SAF)
Fix some properties of modular spider unit
Clearer error message if thumbnail missing on workshop steam upload
Show progress popup importing mods on android and avoid UI freeze
Importing changed rwmod file now refreshes data without needing to restart game
Fix imported changed rwmod files with SAF duplicating instead of replacing existing mod
Fix android screen rotation in opengl mode sometimes causing half the screen to cut off
Some file reading speed ups
Some android menu improvements
Show current attachment in sandbox debug mode
Made unit flags in sandbox debug mode human readable
Show warning popup for overlapping key binds on PC
Fix issues restoring game rules like no nuke, income multiplier, etc from save files (only fixed in new saves for old saves load them in advanced skirmish as a workaround)
spawnUnits gridAlign is now applied after offsetRandomX/Y instead of before
Skip any __MACOSX temp folders in mod data from mac os
Reverting to using legacy direct access storage on Android 9 or less to avoid OS bugs and missing file managers in these android versions, should be possible as scoped storage isn’t forced on those devices.
New android debug option ‘saf force off’ to test direct access, not recommended as this will likely fail in odd ways on newer Android versions, with the OS hiding files from the game.
New android debug option ‘saf force on’ to test saf on older Android versions
New android debug option ‘share logs’ - shortcut to save game logs then show share popup
Message for minVersion in mod-info.txt shows build numbers and current version.
Clamp turret delay and recoil when changing shootDelayMultiplier with setUnitStats
Fix for logic boolean type error on first load
Fix blank screen with android opengl after context loss
Fix rendering of unit help screen on PC
Fix issue with rwmod mods with extra folders not able to be deleted or shared
Fix appendResourceInHUD icons showing up too small
Fix threading crashes reloading mod data on android
Fix debug language overrides not affecting some strings like map triggers
Fix changeCredits map trigger showing incorrect warnings about add/set
Fix v1.15p6 regression with texture atlas causing rendering artifacts
Fix v1.15p6 regression stopping live reloading of textures when using texture atlas
Fix mid path pause when high speed units take a long path
Fix crash when invalid map thumbnails or images are loaded in GUI on PC
Fix rare resume crash on android
Fix crash when importing files fail to send file data on android
Fix crash when import fails to write to target file
Fix crash when maps have invalid floats properties
Fix crash if maps have no tiles defined
Fix crash in UI with fireTurretXAtGround limits and converted/reloaded unit
Fix crash when music fails to list an internal folder
Fix crash running out of memory creating some bitmaps
Fix crash when creating directory over SAF fails
Fix crash in experimental opengl renderer on android
Fix crash rendering too many circles on iOS
Fix race condition threading crashes on iOS
Fix battleroom on PC when using UI scaling (already hotfixed)
Fixed sendMessageData not having the right scope to access things like memory, etc
Error if keys in sendMessageWithData contain spaces
Allow string variables to be set and compared to null
Fix reclaiming with new streaming system allowing resources to be gained
Fix cooldowns not showing on actions from [attachment]showAllActionsFrom
Fixed sandbox editor map export on android when using SAF
Fixed external custom maps not streaming to other players in multiplayer on Android using SAF
Stopped aggressive neutral team capturing neutral
Lots of crash fixes
New support for Storage Access Framework on Android to help make mods with API level 30 required by the Google Play store.
-Android API 30 removes all normal direct file access between apps without SAF. eg a text editor editing an ini file in a mod. Which would make Android modding much harder as an .rwmod would need to be created and imported for every change.
-SAF is a way to return external file access on Android but completely changes how files are handled internally, so please test all file related systems (saving, custom maps, importing files, replays, reading mods, etc) and let me know about any issues.
-Unfortunately Storage Access Framework (SAF) performance is much slower than direct file access which could make loading large mods quite slow so added a ‘Quick Reload’ button to sandbox to try and work around this issue on android. This reloads data only for units that are active on the map. (but this might miss some transitional units right now.)
-Note load times for imported .rwmod mods should be mostly unaffected, and in some cases faster, this is mostly an issue for Android mod makers with unpackaged mods.
-Note once the beta has been updated to API 30, I’ll not be able to revert to API 29 so testing this as an Alpha first.
Large mod loading speed ups for all platforms, especially with heavy copyFrom use
Fixed DPI scaling issue on the window 64 bit version
Fixing UI scaling regression on PC with last 1.15 beta
Caching mod-info.txt data to avoid zip extraction in disabled mods to speed up load times
Crash fixes for android experimental opengl mode
Fix newlines in ${} static blocks
Fix horizontal scrolling of multiplayer game list on android
Fix deleting and renaming of saves and replays on android beta
Fix PC experimental teamshaders for some devices
Fix sandbox replay mode not using modded units
Fix add/setResourcesWithLogic lowercasing all input
Fix bug with setCustomTarget2
Fix regression crash with builtFrom_x_isLocked and no message
builtFrom_x_isLocked now works on old style units like land factory, etc
substring function now supports dynamic start and end numbers
Fixes for projectiles passing though units when moving down at high speed
Fix crash with showActionsWithMixedSelectionIfOtherUnitsHaveTag used with attack ground UI and different numbers of turrets.
Guard order ends if target is an enemy and becomes stealthed
Fixed issue with teamTagDetect map trigger throwing missing team error
Fixed nearestUnit logic boolean not finding neutral units
globalMessage in map scripts now supports globalMessage_LANG
Fixed addWaypoint_target_randomUnit missing some targets
Stealthed units can be seen by spectators and in replays
Fixed building placement guide in some cases helping showing enemy locations through fog
Stop queueItemAdded and queueItemCancelled triggering when item fails to add/remove.
Added ’save logs’ debug option on Android
Android: Fixed beta bug with save files not able to be deleted in 1.15
Android: Fixed beta bug with save files not able to be renamed in 1.15
Android: Fixed dropdown map not picking right map in battleroom or advanced skirmish in 1.15
Android: Attempted fixes for audio glitches when lots of sounds are playing on some devices (Let me know if it helps.)
Fix: DamagingBorder hurting transported units
Fix: Ships unloaded underwater now don’t stay underwater
Fixed empty color fields in mods showing confusing error message
Fixed desync bug caused by convertToNeutralIfNotTransporting
Fixed attacking unit ref missing in 1.15p1
Fix delay when spawning lots of building type units on map load
Internal storage option on Android to allow saves/mods/custom maps to work without needing any storage permissions. Note that internal app storage is deleted by Android when uninstalling.
Fix whenBuilding_temporarilyConvertTo flickering between unit types
Fix temporary tags being reset on sandbox unit reload
Fix Trigger Debug showing on all sandbox tabs
Fix teamColoringMode when using the same image with different modes
Fixed custom projectile imageShadow not showing on android