Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
223 commits
Select commit Hold shift + click to select a range
3f90750
set gl profile core
HeliumAnt Aug 8, 2025
677e7a3
blend scene markers
HeliumAnt Aug 8, 2025
a020ac4
fix title glow
HeliumAnt Aug 8, 2025
f46ba93
add uniform state struct
HeliumAnt Aug 8, 2025
7e0da22
disable asan for entity pool
HeliumAnt Aug 8, 2025
7236de9
fix rteerror crashing when GL isn't initialized
HeliumAnt Aug 8, 2025
1b1d723
start reimplementing raylib in c++
HeliumAnt Aug 8, 2025
b424bee
Rename GLResourceMan -> GLStateMan
HeliumAnt Dec 19, 2025
37744c9
BlendMode intial impl
HeliumAnt Dec 19, 2025
3ea5d21
GLState intial impl
HeliumAnt Dec 19, 2025
bfdf4ae
Batch partial impl
HeliumAnt Dec 19, 2025
3fb5cf8
add attib location enum
HeliumAnt Dec 19, 2025
927c8be
add missing sources
HeliumAnt Dec 19, 2025
5789ef0
add Batch constants
HeliumAnt Dec 19, 2025
98416ed
Camera initial commit
HeliumAnt Dec 19, 2025
1b60f8b
add batch manager
HeliumAnt Dec 19, 2025
59ee482
init gpu primitive reimpl
HeliumAnt Dec 19, 2025
bd80161
add drawable texture class
HeliumAnt Dec 19, 2025
2dbedbf
remove background
HeliumAnt Dec 19, 2025
18849ee
rename conflicting raylib variables
HeliumAnt Dec 19, 2025
d23ef14
Merge branch 'development' into gpu-renderer
HeliumAnt Dec 19, 2025
c985169
fix glm encoding
HeliumAnt Jan 3, 2026
d3f5c70
move BitmapDeleter to allegrotools
HeliumAnt Jan 25, 2026
61c53f1
add Draw(Camera) for gpu drawn
HeliumAnt Jan 25, 2026
ffdeedc
unimplement Camera
HeliumAnt Jan 25, 2026
2405b02
initial DrawTexture impl
HeliumAnt Jan 25, 2026
eba3ccc
initial Rectangle impl
HeliumAnt Jan 25, 2026
3abfd76
test impl of RenderMan
HeliumAnt Jan 25, 2026
72cd4e2
fix template errors
HeliumAnt Jan 25, 2026
7cfc4bd
make Texture a BITMAP wrapper
HeliumAnt Jan 25, 2026
627cbd2
make Rectangles templated
HeliumAnt Jan 25, 2026
cb24586
add alpha component to Color
HeliumAnt Jan 25, 2026
0371d3d
add GetAsTexture
HeliumAnt Jan 25, 2026
fc24695
remove raylib; add missing cpp files
HeliumAnt Jan 25, 2026
8e7096e
RenderBatch 'refactor'
HeliumAnt Jan 25, 2026
7417e68
get texture animation
HeliumAnt Jan 26, 2026
1493134
Merge branch 'development' into gpu-renderer
HeliumAnt Jan 26, 2026
b7d97f5
Add non indexed drawing to Blit8 shader
HeliumAnt Feb 2, 2026
5cc910f
add vertex struct
HeliumAnt Feb 2, 2026
d71f5fb
add DrawCall struct
HeliumAnt Feb 2, 2026
428e36f
Add DebugMan for tracking debug state
HeliumAnt Feb 2, 2026
f246aae
Implement RenderBatch
HeliumAnt Feb 2, 2026
63beec8
Add alpha channel to Color
HeliumAnt Feb 2, 2026
01d01ff
move IntersectionCut to header, add additional constructors
HeliumAnt Feb 2, 2026
64ad94d
implement in gl fo rRenderBatch
HeliumAnt Feb 2, 2026
71ac104
remove raylib references
HeliumAnt Feb 2, 2026
f419a8c
add FloatRect cast
HeliumAnt Feb 2, 2026
1d807b0
unify BitmapDeleter in AllegroTools
HeliumAnt Feb 2, 2026
edd3e11
add GetAsTexture
HeliumAnt Feb 2, 2026
c7707c9
disable raylib debug context
HeliumAnt Feb 2, 2026
eb56e50
add missing files
HeliumAnt Feb 2, 2026
92810fc
reimplement with pure GL and wrappers
HeliumAnt Feb 2, 2026
815ee2c
implement Camera
HeliumAnt Feb 2, 2026
f4d872b
default BlendMode comparison op
HeliumAnt Feb 2, 2026
50b4e0a
enable debug context and context debug callbacks
HeliumAnt Feb 2, 2026
7850d57
add initial Shapes and Sprite drawing
HeliumAnt Feb 2, 2026
5c227d3
update BigTexture for current wrappers
HeliumAnt Feb 2, 2026
871afa6
Draw the rest of the owl
HeliumAnt Feb 3, 2026
60821ea
Doc; allow updating bitmaptexture
HeliumAnt Feb 3, 2026
fc540e3
Add VectorArrow shape draw
HeliumAnt Feb 3, 2026
4834f28
Fix scenelayer not correctly updating with the camera system
HeliumAnt Feb 3, 2026
1b1c59e
draw camera
HeliumAnt Feb 3, 2026
f00ef33
"Draw" background layer
HeliumAnt Feb 3, 2026
d7f025f
Draw glows
HeliumAnt Feb 3, 2026
84510d5
Properly draw to window
HeliumAnt Feb 3, 2026
20d1434
implement frustum cull
HeliumAnt Feb 3, 2026
4f2ad9b
Test indexed in Draw
HeliumAnt Feb 3, 2026
29e6dcb
default to active shader on batch draw
HeliumAnt Feb 3, 2026
1350382
allow changing active shader; reset to default shader on shader::End
HeliumAnt Feb 3, 2026
5f9eb36
delete textures on close
HeliumAnt Feb 3, 2026
5224b0b
allow specifying filtering and wrap on non bitmap textures
HeliumAnt Feb 3, 2026
224d2d7
arrow shape
HeliumAnt Feb 3, 2026
b78eb1c
allow en/disabling rendertargets without flushing
HeliumAnt Feb 3, 2026
818e2d4
gpu scenelayers
HeliumAnt Feb 3, 2026
b8136a7
correct MOSR angle and MOS flip state
HeliumAnt Feb 3, 2026
10b01b5
maybe possibly fix gui blit?
HeliumAnt Feb 3, 2026
b68cb26
gpu frameman (initial, still needs massive changes to cameraman)
HeliumAnt Feb 3, 2026
4e5dee3
intial empty draw impl
HeliumAnt Feb 15, 2026
7a0ee3b
remove allegro from RTEError header
HeliumAnt Feb 15, 2026
6fd3124
forward declare BITMAP in AllegroTools header
HeliumAnt Feb 15, 2026
fd422dd
format
HeliumAnt Feb 15, 2026
8f8c9bd
uncenter Camera matrix (removes float errors)
HeliumAnt Feb 15, 2026
d8b4fea
TEMP: disable primitive draw
HeliumAnt Feb 15, 2026
2579cc7
just don't exit allegro. it's probably fine
HeliumAnt Mar 18, 2026
fb82258
add DebugMan impl
HeliumAnt Mar 24, 2026
a9653c0
add PerformanceMan ImGui
HeliumAnt Mar 24, 2026
a75994f
make Backbuffers drawable with new renderer
HeliumAnt Mar 24, 2026
9c37810
add show debug options lua binding
HeliumAnt Mar 24, 2026
8cebce0
friend DebugMan
HeliumAnt Mar 24, 2026
5fec75d
remove SceneLayer DrawMasked
HeliumAnt Mar 24, 2026
ebb0196
remove SceneLayer DrawMasked
HeliumAnt Mar 24, 2026
9d0e98f
add show debug options setting
HeliumAnt Mar 24, 2026
89f1bcc
fix final draw
HeliumAnt Mar 24, 2026
cbfd471
remove SceneLayer DrawMasked
HeliumAnt Mar 24, 2026
c207bb4
disable Terrain scrolling
HeliumAnt Mar 26, 2026
ce3b8a8
make SLBackground drawable
HeliumAnt Mar 26, 2026
433e480
fix wrapped drawing and scrolling backgrounds
HeliumAnt Mar 27, 2026
dc157d7
add DebugMan:ShowDebugOptions to lua
HeliumAnt Mar 27, 2026
e9be875
initial CameraMan camera move
HeliumAnt Mar 27, 2026
9b01684
more debugging options
HeliumAnt Mar 27, 2026
d1f984f
add free camera
HeliumAnt Mar 27, 2026
2ecda2e
correctly reverse iterate backgrounds, stop offsetting sceneLayers
HeliumAnt Mar 27, 2026
418b503
add DebugMan imgui
HeliumAnt Mar 27, 2026
bc5d4bb
add DebugMan imgui
HeliumAnt Mar 27, 2026
f1e89b5
TitleScreen inital draw
HeliumAnt Mar 27, 2026
fe97fe6
remove raylib draw
HeliumAnt Mar 27, 2026
de6753a
allow BlendMode disabling blending
HeliumAnt Mar 27, 2026
f546156
no longer using glm::ortho, just manually translate, use lines mode f…
HeliumAnt Mar 27, 2026
34e5b12
add line mode rectangle
HeliumAnt Mar 27, 2026
36aa9f6
no longer storing camera in drawcall
HeliumAnt Mar 27, 2026
144df32
store active camera in batch (allows redrawing batch with different c…
HeliumAnt Mar 27, 2026
096a900
move camera to batch, allow null camera, fix zOffset, allow batch swi…
HeliumAnt Mar 27, 2026
e4dee37
make RenderTarget just own its framebuffer, allow empty RenderTarget
HeliumAnt Mar 27, 2026
2fb4cb3
remove debug prints
HeliumAnt Mar 27, 2026
3870f9f
add lines mode rectangles
HeliumAnt Mar 27, 2026
f64b53c
allow updating bitmaptextures
HeliumAnt Mar 27, 2026
39193a4
make rectangle conversion operators const
HeliumAnt Mar 27, 2026
2a3586f
add GetAsTextureAnimation
HeliumAnt Mar 27, 2026
a65a90e
do actually still need these here. FIXME: EVIL
HeliumAnt Mar 27, 2026
315a08b
add glm::vec2<T> constructor
HeliumAnt Mar 27, 2026
c95346f
remap renderdoc capture keys (if available)
HeliumAnt Mar 27, 2026
60f8581
don't draw invisible hands (TODO: why are some hands still drawing????)
HeliumAnt Mar 27, 2026
ff2d2d9
follow my own advice and don't reinvent wrapping again
HeliumAnt Mar 28, 2026
2e07022
camera wrapping
HeliumAnt Mar 28, 2026
556c641
only set actual offsets, the camera moves now, not the scene (except …
HeliumAnt Mar 28, 2026
9790d98
intial setup for HUD
HeliumAnt Mar 28, 2026
88ff92b
make screen flash with fancy new shapes
HeliumAnt Mar 28, 2026
43c98b2
draw gui buffers separately without camera offsets
HeliumAnt Mar 28, 2026
7be0f80
intial split screen support
HeliumAnt Mar 28, 2026
f6a8e5f
no need for backgroundShader anymore.
HeliumAnt Mar 28, 2026
cc25f7f
initial setup for GPU HUD
HeliumAnt Mar 28, 2026
a54f60d
initial setup for GPU HUD
HeliumAnt Mar 28, 2026
a3e68b9
add camera clip states
HeliumAnt Mar 28, 2026
b19dcea
more linesmode shapes
HeliumAnt Mar 28, 2026
6b40639
Add visual modernisation plan
hotsake-uk Oct 3, 2026
71d9f65
Merge upstream gpu-renderer branch (HeliumAnt WIP renderer rewrite)
hotsake-uk Oct 3, 2026
fe4d0c4
Fix settings after MuteAudioOnFocusLoss being silently ignored
hotsake-uk Oct 3, 2026
7eaf52b
Bridge GPU frame to the CPU HUD until the GPU HUD exists
hotsake-uk Oct 3, 2026
f6c5887
Port Lua/graphical primitives to the new GPU renderer
hotsake-uk Oct 3, 2026
dba3e06
Restore title screen on the GPU renderer and fix clipped menu text
hotsake-uk Oct 3, 2026
7fe124a
Interpolate rendering between sim updates and fix GPU particle drawing
hotsake-uk Oct 3, 2026
7e315f9
Restore GPU draws made from the CPU HUD path and menus
hotsake-uk Oct 3, 2026
28aae55
Plan: add progress log
hotsake-uk Oct 3, 2026
29069d3
Add scene lighting: propagating sky light, glow lights, HDR, bloom
hotsake-uk Oct 3, 2026
3bf8653
Add Graphics Lab and persist lighting settings
hotsake-uk Oct 3, 2026
44de5b4
Lighting: time of day, debug views, graceful glow and light saturation
hotsake-uk Oct 3, 2026
5c98d83
Add dynamic lights for MovableObjects and Lua
hotsake-uk Oct 3, 2026
62adda0
Draw atom trails (tracers) on the GPU renderer
hotsake-uk Oct 3, 2026
af5b1f3
Lighting: automatic edge normals for sprites and terrain
hotsake-uk Oct 3, 2026
a202b98
Plan: progress log update
hotsake-uk Oct 3, 2026
aa9157e
Renderer: merge compatible draw calls, bake sprite transforms on CPU
hotsake-uk Oct 3, 2026
82f6cda
Add heat haze and explosion shockwaves
hotsake-uk Oct 3, 2026
7e66086
Add atmospheric haze to background layers
hotsake-uk Oct 3, 2026
d8fa306
Add procedural rain and snow
hotsake-uk Oct 3, 2026
e241f54
Expose time of day, weather and light colors to Lua
hotsake-uk Oct 3, 2026
76c0b11
Add Lighting, Bloom and Heat/Shockwaves toggles to Video settings
hotsake-uk Oct 3, 2026
554200a
Add god rays: light shafts from the sky into caves
hotsake-uk Oct 3, 2026
0815b3f
Lighting: keep the playfield readable underground, emissive palette c…
hotsake-uk Oct 3, 2026
762a33d
Lighting: slightly softer default bloom
hotsake-uk Oct 3, 2026
647f3f7
Restore fog of war on the GPU renderer, with soft edges
hotsake-uk Oct 3, 2026
ec9d28b
Add scorch marks and cooling hot spots on terrain
hotsake-uk Oct 3, 2026
1e9a38f
Fix blending into the normal attachment; dimmer foreground floor at n…
hotsake-uk Oct 3, 2026
659844e
Add color grading, film grain and chromatic aberration
hotsake-uk Oct 3, 2026
4ac17d5
Document lighting and effects for players, modders and scripters; cha…
hotsake-uk Oct 3, 2026
d287fbf
Per-scene atmosphere: scenes can set time of day and weather
hotsake-uk Oct 3, 2026
f10cc3b
Docs: scene atmosphere
hotsake-uk Oct 3, 2026
21e19d4
Plan: status update
hotsake-uk Oct 3, 2026
4717474
Add procedural embers rising from fire and warm glows
hotsake-uk Oct 3, 2026
1da4bac
God rays: dust motes drifting through the light shafts
hotsake-uk Oct 3, 2026
526b0c0
Add Tools/RenderTest: scenario captures for checking rendering by eye
hotsake-uk Oct 3, 2026
2167735
Add one-bounce indirect light (screen space GI)
hotsake-uk Oct 3, 2026
a0ba9f7
Video settings: 'Extra Effects' toggle covers heat, shockwaves, scorc…
hotsake-uk Oct 3, 2026
7f8781c
Classic mode: neutral tonemap with lighting off; fix shoulder at 1.0
hotsake-uk Oct 3, 2026
978b57a
RenderTest: BunkerPerf scenario (night FX with the performance overlay)
hotsake-uk Oct 3, 2026
84950f5
Renderer: pool draw calls and build quads in place (169 -> 250 FPS)
hotsake-uk Oct 3, 2026
e0a751a
clang-format the lines changed on this branch
hotsake-uk Oct 3, 2026
8713edd
Per-object blend modes: RenderBlendMode and RenderOpacity
hotsake-uk Oct 3, 2026
3d6a47a
Plan: status update and remaining roadmap
hotsake-uk Oct 3, 2026
a9f75eb
RenderTest: Input.ps1 for playtesting with real input; Play scenarios
hotsake-uk Oct 3, 2026
4d36a3f
RenderTest: add Soak.ps1 input-driven stability/memory soak
hotsake-uk Oct 3, 2026
969eb79
Fix scenario site markers not drawing on the planet
hotsake-uk Oct 3, 2026
7dd19d2
Fix black frames when the window is exposed; guard lighting against NaN
hotsake-uk Oct 3, 2026
aa8c1e7
Brighter interiors and caves; version lighting settings
hotsake-uk Oct 3, 2026
26b5500
Add F6 World Debug window: time of day, weather, lighting, game speed
hotsake-uk Oct 3, 2026
9d418ef
Add graphics quality presets (Potato to Ultra)
hotsake-uk Oct 3, 2026
e7a2775
Add auto exposure for flashes and pitch-dark scenes
hotsake-uk Oct 3, 2026
09f4621
Add a night sky (stars and moon) and lightning in heavy rain
hotsake-uk Oct 3, 2026
5310fce
Smoother screen shake that never touches the sim's random numbers
hotsake-uk Oct 3, 2026
ee05444
Fix invisible pie menu ring and inventory carousel; texture upload bugs
hotsake-uk Oct 3, 2026
f202056
Draw background edge fills and deployment spawn radius on the GPU
hotsake-uk Oct 3, 2026
894119e
Update plan progress; clang-format lines changed since the last pass
hotsake-uk Oct 3, 2026
a0f8c0a
Sharp bilinear upscale of the finished frame to the window
hotsake-uk Oct 3, 2026
1407138
RenderTest: golden image regression check
hotsake-uk Oct 3, 2026
bfb863f
Upload only changed terrain to the GPU; harden golden compare
hotsake-uk Oct 3, 2026
7c3eba5
Sprite atlas: small 8-bit sprite frames share 2048x2048 atlas pages
hotsake-uk Oct 3, 2026
45228a5
High resolution HUD text (Smooth HUD Text)
hotsake-uk Oct 3, 2026
898b477
Add radiance cascades global illumination (Ultra)
hotsake-uk Oct 3, 2026
5c6e4de
Plan: roadmap completed, SDL_GPU deferred with staging; golden compar…
hotsake-uk Oct 3, 2026
b7b76f9
Add next phase feature proposal (awaiting approval)
hotsake-uk Oct 3, 2026
6ac2b91
Phase A: visual effects particles (sparks, dust, debris)
hotsake-uk Oct 3, 2026
317f345
Phase A: light scattering in smoke
hotsake-uk Oct 3, 2026
3d8c497
Phase A: blood and oil stains on terrain
hotsake-uk Oct 3, 2026
53b6b23
Phase A: living world (vegetation sway, settling snow, wet ground)
hotsake-uk Oct 3, 2026
4ead00c
Phase A: photo mode (F8)
hotsake-uk Oct 3, 2026
7d5aebf
Phase B: spreading fire through flammable terrain
hotsake-uk Oct 3, 2026
84fb139
Phase B: collapsing terrain
hotsake-uk Oct 3, 2026
62da4bc
Phase C: flowing liquids (water, lava, acid) with liquid rendering
hotsake-uk Oct 3, 2026
9889ed4
Phase C: night gameplay (headlamps, AI darkness, flares)
hotsake-uk Oct 3, 2026
fa7b250
Phase D: optional modern HUD (minimap, health/ammo bars, loss feed)
hotsake-uk Oct 3, 2026
92016c4
Phase D: scale debug UI and modern HUD with the window, crisp TTF font
hotsake-uk Oct 3, 2026
995146c
Proposal status: phases A-D implemented, deferred items explained; cl…
hotsake-uk Oct 3, 2026
6376038
RenderTest: tidy flare test script
hotsake-uk Oct 3, 2026
e82d725
Fix loading saved games; save burning fire and flowing liquid
hotsake-uk Oct 3, 2026
5556688
Scenario setup: choose time of day and weather for the game
hotsake-uk Oct 3, 2026
932d862
Smoke blocks sight; add Smoke Grenade and Toxic Gas Grenade
hotsake-uk Oct 3, 2026
024b7a4
Liquid weapons: Napalm Flamer, Water Cannon, Acid Sprayer
hotsake-uk Oct 3, 2026
902cf0c
Weather that matters: rain and snow damp fire, snow slows walkers, wi…
hotsake-uk Oct 3, 2026
626cdac
Docs: smoke, gas, liquid weapons, weather effects, saved fire and liq…
hotsake-uk Oct 3, 2026
9551b2e
Sandbox game mode and F7 sandbox tools
hotsake-uk Oct 4, 2026
b24b346
Sandbox: game's build menu, correct side colours, likely crash fix
hotsake-uk Oct 4, 2026
9b546b8
Burning units, steam and fuel barrels
hotsake-uk Oct 4, 2026
8d6efac
Sandbox: dropship squads, auto battles, box-select commands, follow c…
hotsake-uk Oct 4, 2026
915ce1e
Pause AI: hold every AI-run unit still while setting up a battle
hotsake-uk Oct 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),

<details><summary><b>Added</b></summary>

- Scene lighting and post-processing (see `Documentation/LightingAndEffects.md`).
Sky light that spreads through the terrain (caves get darker the deeper they go, digging lets light in), ambient light, and dynamic lights with soft terrain shadows. Every glow effect now casts light in its own color, so muzzle flashes, explosions, thrusters and fire light up their surroundings with no content changes.
Automatic edge normals for all sprites and terrain so edges catch the light, emissive palette colors (gold sparkle, tracers), HDR bloom, highlight compression, vignette and color grading (temperature, tint, contrast, split toning, film grain, chromatic aberration).
Time of day and day/night cycle (`TimeOfDay`, `DayLengthMinutes`), atmospheric haze on distant background layers, god rays into caves, and procedural rain and snow (`WeatherType`, `WeatherIntensity`, `Wind`) that stays out from under overhangs.
Heat haze above hot things, refraction shockwaves from explosions, and scorch marks with cooling, glowing crater rims.
Soft edged fog of war.
Visual-only render interpolation between simulation updates for smooth motion at any frame rate.
New `MovableObject` INI and Lua properties `LightColor` (Lua `SetLightColor(r, g, b)`, `LightRed/Green/Blue`), `LightRadius`, `LightIntensity`, `LightFlicker` and `LightOffset`.
New `PostProcessMan` Lua functions and properties: `AddLight(pos, radius, r, g, b, intensity)`, `TimeOfDay`, `DayLengthMinutes`, `WeatherType`, `WeatherIntensity`, `Wind`, `LightingEnabled`, `SetSkyColor(r, g, b)`, `SetAmbientColor(r, g, b)`, `SetColorGrade(temperature, tint, contrast)`, `SetSplitToning(...)`.
Lighting, Bloom and Heat/Shockwaves toggles in the Video settings, many new `Settings.ini` keys, and a Graphics Lab debug window (`ShowGraphicsLab`, `DebugMan:ShowGraphicsLab()`) for live tuning.

- Pathfinding and navigation overhaul, including jetpack/jump-aware pathfinding.
Actors will now choose their path depending on how high they can jump, instead of always taking the shortest flying path. This will reduce instances of the AI getting stuck while trying to take paths that are impossible for them.
Improvements to both `ACrab` and `AHuman` navigation. `ACrab`s are now aware of how to pathfind and navigate using their jetpack, and will use it where applicable. Actors are better at using their jetpack, and will use automovers if their jetpack is not sufficient to reach a destination.
Expand Down
3 changes: 2 additions & 1 deletion Data/Base.rte/AI/HumanBehaviors.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1107,7 +1107,8 @@ function HumanBehaviors.ShootTarget(AI, Owner, Abort)
local TargetPoint = AI.Target.Pos + AI.TargetOffset;

if (range < Owner.AimDistance + Weapon.SharpLength + FrameMan.PlayerScreenWidth*0.5) and
(not AI.isPlayerOwned or not SceneMan:IsUnseen(TargetPoint.X, TargetPoint.Y, Owner.Team))
(not AI.isPlayerOwned or not SceneMan:IsUnseen(TargetPoint.X, TargetPoint.Y, Owner.Team)) and
not SceneMan:SmokeBlocksSight(Owner.EyePos, TargetPoint) -- lose track of targets hidden by smoke
then
if PrjDat.pen > 0 then
if SceneMan:CastStrengthSumRay(Weapon.Pos, TargetPoint, 6, rte.grassID) * 5 < PrjDat.pen then
Expand Down
28 changes: 28 additions & 0 deletions Data/Base.rte/Activities.ini
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,34 @@ AddActivity = GAScripted
AddRequiredArea = LZ All


///////////////////////////////////////////////////////////////////////
// Sandbox


AddActivity = GAScripted
PresetName = Sandbox
Description = Play god. Spawn armies, brains, bunkers and weapons for up to four sides, paint fire, water and lava, call down lightning and change the weather, then watch the AI fight it out. Take control of any unit whenever you like. Nobody wins and nothing ends. Press F7 for the sandbox tools.
SceneName = Ketanot Hills
TeamOfPlayer1 = 0
MinTeamsRequired = 1
Team1Name = Red
Team2Name = Green
Team3Name = Blue
Team4Name = Yellow
Team1Funds = 0
Team2Funds = 0
Team3Funds = 0
Team4Funds = 0
ScriptPath = Base.rte/Activities/Sandbox.lua
LuaClassName = SandboxActivity
DefaultRequireClearPathToOrbit = 0
DefaultFogOfWar = 0
DefaultDeployUnits = 0
RequireClearPathToOrbitSwitchEnabled = 0
FogOfWarSwitchEnabled = 0
DeployUnitsSwitchEnabled = 0


///////////////////////////////////////////////////////////////////////
// Test Activities

Expand Down
34 changes: 34 additions & 0 deletions Data/Base.rte/Activities/Sandbox.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package.loaded.Constants = nil; require("Constants");

-- The Sandbox game mode. Almost everything happens in the sandbox tools (F7, Source/Managers/Sandbox.cpp):
-- the player is a god watching from a free camera, every unit is run by the AI, and nothing ever ends the game.

function SandboxActivity:StartActivity(isNewGame)
for player = Activity.PLAYER_1, Activity.MAXPLAYERCOUNT - 1 do
if self:PlayerActive(player) and self:PlayerHuman(player) then
self:SetViewState(Activity.OBSERVE, player);
-- Start looking at the ground in the middle of the map.
local look = Vector(SceneMan.SceneWidth * 0.5, 0);
while look.Y < SceneMan.SceneHeight - 1 and SceneMan:GetTerrMatter(look.X, look.Y) == rte.airID do
look.Y = look.Y + 4;
end
look.Y = look.Y - FrameMan.PlayerScreenHeight * 0.15;
self:SetObservationTarget(look, player);
CameraMan:SetScrollTarget(look, 1, self:ScreenOfPlayer(player));
end
end
-- Doors already in the scene open for everyone.
for actor in MovableMan.AddedActors do
if IsADoor(actor) then
actor.Team = Activity.NOTEAM;
end
end
end

function SandboxActivity:UpdateActivity()
-- Nobody wins: the game only ends when you leave it.
end

function SandboxActivity:OnSave()
-- Nothing extra to save, but saving needs this.
end
5 changes: 5 additions & 0 deletions Data/Base.rte/Devices.ini
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ IncludeFile = Base.rte/Devices/Weapons/RocketLauncher/RocketLauncher.ini
// Explosives

IncludeFile = Base.rte/Devices/Explosives/FragGrenade/FragGrenade.ini
IncludeFile = Base.rte/Devices/Explosives/Flare/Flare.ini
IncludeFile = Base.rte/Devices/Explosives/SmokeGrenade/SmokeGrenade.ini
IncludeFile = Base.rte/Devices/Explosives/ToxicGasGrenade/ToxicGasGrenade.ini
IncludeFile = Base.rte/Devices/Explosives/AntiPersonnelMine/AntiPersonnelMine.ini
IncludeFile = Base.rte/Devices/Explosives/RemoteExplosive/RemoteExplosive.ini
IncludeFile = Base.rte/Devices/Explosives/StandardBomb/StandardBomb.ini
Expand All @@ -35,6 +38,8 @@ IncludeFile = Base.rte/Devices/Tools/Digger/Digger.ini
IncludeFile = Base.rte/Devices/Tools/Scanner/Scanner.ini
IncludeFile = Base.rte/Devices/Tools/Disarmer/Disarmer.ini
IncludeFile = Base.rte/Devices/Tools/ConcreteSprayer/ConcreteSprayer.ini
IncludeFile = Base.rte/Devices/Weapons/LiquidSprayers/LiquidSprayers.ini
IncludeFile = Base.rte/Devices/Explosives/FuelBarrel/FuelBarrel.ini
IncludeFile = Base.rte/Devices/Tools/Repeller/Repeller.ini
IncludeFile = Base.rte/Devices/Tools/GrappleGun/GrappleGun.ini
IncludeFile = Base.rte/Devices/Tools/Constructor/Constructor.ini
Expand Down
81 changes: 81 additions & 0 deletions Data/Base.rte/Devices/Explosives/Flare/Flare.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
// A thrown flare: lights the area around it in flickering red for about 45 seconds (see Flare.lua).

AddDevice = TDExplosive
PresetName = Flare
Description = Throw it to light up the battlefield with a bright red glow for about 45 seconds. Handy at night.
AddToGroup = Bombs - Grenades
AddToGroup = Bombs
Mass = 0.5
RestThreshold = -500
HitsMOs = 1
GetsHitByMOs = 1
ScriptPath = Base.rte/Devices/Explosives/Flare/Flare.lua
ScreenEffect = ContentFile
FilePath = Base.rte/Effects/Glows/RedSmall.png
EffectStartStrength = 1
EffectStopStrength = 1
PostEffectEnabled = 0
EffectAlwaysShows = 1
SpriteFile = ContentFile
FilePath = Base.rte/Devices/Explosives/FragGrenade/FragGrenade.png
FrameCount = 2
SpriteAnimMode = 0
SpriteOffset = Vector
X = -3
Y = -4
EntryWound = AEmitter
CopyOf = Dent Metal
ExitWound = AEmitter
CopyOf = Dent Metal
GoldValue = 8
Buyable = 1
AtomGroup = AtomGroup
AutoGenerate = 1
Material = Material
CopyOf = Military Stuff
Resolution = 2
Depth = 0
DeepGroup = AtomGroup
AutoGenerate = 1
Material = Material
CopyOf = Military Stuff
Resolution = 4
Depth = 10
DeepCheck = 0
JointStrength = 75
JointStiffness = 0.5
JointOffset = Vector
X = -1
Y = 1
DrawAfterParent = 0
StanceOffset = Vector
X = 8
Y = 6
SharpStanceOffset = Vector
X = -7
Y = 7
SupportOffset = Vector
X = 1
Y = -2
SharpLength = 75
ActivationSound = SoundContainer
AddSound = ContentFile
FilePath = Base.rte/Sounds/Devices/EmptyClick1.flac
StartThrowOffset = Vector
X = -11
Y = -3
EndThrowOffset = Vector
X = 12
Y = -1
TriggerDelay = 45000
ActivatesWhenReleased = 1
StrikerLever = MOSParticle
CopyOf = Grenade Pin
AddGib = Gib
GibParticle = MOSParticle
CopyOf = Spark Yellow Particle
Count = 6
Spread = 3.14
MaxVelocity = 6
MinVelocity = 2
InheritsVel = 0
24 changes: 24 additions & 0 deletions Data/Base.rte/Devices/Explosives/Flare/Flare.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
function Create(self)
self.lit = false;
end

function Update(self)
-- Once thrown, the flare burns with a flickering red light until it fizzles out.
-- Lit once thrown: activated, or flying free of whoever held it.
if not self.lit and (self:IsActivated() or (self.ID == self.RootID and self.Age > 150 and self.Vel.Magnitude > 0.5)) then
self.lit = true;
self.LightRadius = 320;
self.LightIntensity = 3.0;
self.LightFlicker = 0.25;
self:SetLightColor(255, 70, 50);
self.PostEffectEnabled = true;
self.burnTimer = Timer();
end
if self.lit and self.burnTimer then
-- Dim over the last few seconds of its life.
local remaining = 1 - self.burnTimer.ElapsedSimTimeMS / 45000;
if remaining < 0.15 then
self.LightIntensity = 3.0 * math.max(remaining / 0.15, 0);
end
end
end
164 changes: 164 additions & 0 deletions Data/Base.rte/Devices/Explosives/FuelBarrel/FuelBarrel.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
///////////////////////////////////////////////////////////////////////
// Fuel Barrel: leaks oil where it's shot (the oil runs and pools), and explodes in a shower of burning fuel when fire reaches it or it's shot to pieces.


AddEffect = MOPixel
PresetName = Leaking Fuel Drop
Mass = 0.03
AirResistance = 0.01
RestThreshold = 500
HitsMOs = 0
GetsHitByMOs = 0
Color = Color
R = 64
G = 19
B = 12
Atom = Atom
Material = Material
CopyOf = Oil
TrailColor = Color
R = 64
G = 19
B = 12
TrailLength = 2


AddEffect = AEmitter
PresetName = Fuel Leak
Mass = 0.0001
HitsMOs = 0
GetsHitByMOs = 0
SpriteFile = ContentFile
FilePath = Base.rte/Effects/Wounds/MetalWoundA.png
FrameCount = 1
SpriteOffset = Vector
X = -2
Y = -2
AtomGroup = AtomGroup
AutoGenerate = 1
Material = Material
CopyOf = Military Stuff
Resolution = 2
Depth = 5
DeepCheck = 0
JointStrength = 10000
JointStiffness = 1
DrawAfterParent = 1
AddEmission = Emission
EmittedParticle = MOPixel
CopyOf = Leaking Fuel Drop
Spread = 0.3
MaxVelocity = 3
MinVelocity = 1
EmissionEnabled = 1
EmissionCountLimit = 150
EmissionsIgnoreThis = 1
ParticlesPerMinute = 400
BurstSize = 6
BurstScale = 1
BurstTriggered = 1
EmissionDamage = 0


AddDevice = TDExplosive
PresetName = Fuel Barrel
AddToGroup = Bombs
AddToGroup = Bunker Systems
Description = A drum of fuel. Shoot it and it leaks oil that runs downhill and pools; set it alight, or shoot it to pieces, and it explodes in a shower of burning fuel.
Mass = 40
RestThreshold = -500
HitsMOs = 1
GetsHitByMOs = 1
ScriptPath = Base.rte/Devices/Explosives/FuelBarrel/FuelBarrel.lua
AddCustomValue = NumberValue
Flammable = 1
SpriteFile = ContentFile
FilePath = Base.rte/Devices/Explosives/FuelBarrel/FuelBarrel.png
FrameCount = 1
SpriteOffset = Vector
X = -5
Y = -7
EntryWound = AEmitter
CopyOf = Fuel Leak
ExitWound = AEmitter
CopyOf = Fuel Leak
GoldValue = 10
Buyable = 1
AtomGroup = AtomGroup
AutoGenerate = 1
Material = Material
CopyOf = Military Stuff
Resolution = 2
Depth = 0
DeepGroup = AtomGroup
AutoGenerate = 1
Material = Material
CopyOf = Military Stuff
Resolution = 4
Depth = 10
DeepCheck = 0
JointStrength = 40
JointStiffness = 0.5
DrawAfterParent = 0
StanceOffset = Vector
X = 7
Y = 5
SharpStanceOffset = Vector
X = 4
Y = -4
SupportOffset = Vector
X = 2
Y = 2
GibImpulseLimit = 3000
GibWoundLimit = 14
GibBlastStrength = 15
GibSound = SoundContainer
AttenuationStartDistance = 250
AddSound = Base.rte/Sounds/Explosions/Ballistic/ExplodeLarge1.flac
AddSound = Base.rte/Sounds/Explosions/Ballistic/ExplodeLarge2.flac
AddSound = Base.rte/Sounds/Explosions/Ballistic/ExplodeLarge3.flac
TriggerDelay = 600000
ActivatesWhenReleased = 0
AddGib = Gib
GibParticle = MOPixel
CopyOf = Glow Explosion Huge
MaxVelocity = 1
AddGib = Gib
GibParticle = MOSParticle
CopyOf = Fire Puff Large
Count = 8
MinVelocity = 10
MaxVelocity = 25
LifeVariation = 0.20
InheritsVel = 0
AddGib = Gib
GibParticle = MOPixel
CopyOf = Napalm Fuel
Count = 70
Spread = 3.14
MinVelocity = 4
MaxVelocity = 14
InheritsVel = 0
AddGib = Gib
GibParticle = MOSParticle
CopyOf = Flame Hurt Short
Count = 10
Spread = 3.14
MinVelocity = 3
MaxVelocity = 9
InheritsVel = 0
AddGib = Gib
GibParticle = MOSParticle
CopyOf = Explosion Smoke 1
Count = 6
Spread = 3.14
MinVelocity = 2
MaxVelocity = 6
InheritsVel = 0
AddGib = Gib
GibParticle = MOSParticle
CopyOf = Gib Military Tiny A
Count = 4
Spread = 3.14
MinVelocity = 6
MaxVelocity = 16
Loading