Commit Graph

1191 Commits

Author SHA1 Message Date
Departing
d5f94f4718
Added chemically strengthening GLAS (#837) 2022-04-04 23:17:08 -04:00
jacob1
14348437a6
Fix TRON being unable to pathfind to the top and left edges of the screen 2022-03-18 18:13:01 -04:00
Tamás Bálint Misius
df7bbd3b8e
Prevent SaveRenderer from calling into Lua
Also clear SaveRenderer graphics cache along with the main Renderer's when needed, and revert to built-in element callbacks rather than nothing at all when assigning nil to a callback slot in Lua.
2022-02-23 22:22:10 +01:00
jacob1
477909d00f
Redo code that makes SOAP float on OIL
Rather than hacking velocity, do it directly through can_move. Add a special case to make it slowly float upwards, rather than immediate like most weight differences in TPT.
2022-02-21 23:56:52 -05:00
jacob1
982fdff528
Add safeguard to try_move to ensure we don't write to out of bounds pmap
This is a follow up to this crash fix - 0ed8d0a0be
This may possibly fix other crashes users occasionally experience, especially in the case of high velocity particles with loop edge mode on. Even so, there are other bugs at play, as a crash here can't be triggered if pmap is in a correct state
2022-02-21 23:36:10 -05:00
Tamás Bálint Misius
7ab720d847
Fix pipe mirroring (fixes #750 again) 2022-02-04 09:07:02 +01:00
jacob1
eadd381da9
Fix incorrect RNG call in WARP, code cleanup
x velocity was set using .chance instead of .between. This always returned false, meaning vx always was set to .5 giving a rightward bias
2022-01-06 20:29:07 -05:00
xphere07
674134588c
Upgrade to C++17 (#819) 2021-12-13 14:41:02 +01:00
Tamás Bálint Misius
ce84e60074
Fix a few warnings
I found these looking at ghactions output.
2021-12-09 09:11:47 +01:00
Tamás Bálint Misius
dbd971fb05
Convert float pavg[2] to int tmp3, tmp4
Also add GameSave::PressureInTmp3 to check for elements with pressure memory and fix TUNG not sampling pressure on creation. This does not in itself fix #822 because tmp3 and tmp4 are still saved in 16 bits each, so full ctypes still don't fit in tmp3.
2021-12-09 07:49:31 +01:00
Tamás Bálint Misius
b587732d7b
Fix render failing to compile with GCC 11
Due to Client::SetPref not being available for use by AddCustomGol. GCC 7 didn't mind this, weird.
2021-12-07 16:44:48 +01:00
jacob1
0ed8d0a0be
Fix flood_water movement cancel check
This fixes a crash with water equalization on, with loop mode enabled, when there are high velocity particles near the edges. This can be occasionally reproduced with id:2800901

The water was moved to a new position and pmap updated, but the movement code continued, assuming water was at its old position. pmap for the WATR's old position won't be cleared once it moves, leaving a stale entry. If a particle then looks up the water in that location and tries to swap positions, this can cause a crash at the end of try_move
2021-10-23 00:52:13 -04:00
Tamás Bálint Misius
5582d6881d
Update tpt-libs, add support for compiling with MinGW on Windows 2021-10-22 23:14:54 +02:00
Tamás Bálint Misius
d675d483bd
Leave the original GameSave alone in Simulation::Load 2021-10-13 11:26:48 +02:00
jacob1
323c443d2a
Minor LIGH compat fix
old LIGH with invalid high .tmp2 will spawn a line of LIGH, rather than disappearing
2021-08-29 14:02:21 -04:00
jacob1
44590d82e9
Add a few more Lua functions
sim.replaceModeFlags
sim.listCustomGol
sim.addCustomGol
sim.removeCustomGol
tpt.perfectCircleBrush
sim.floodDeco
2021-08-27 23:57:55 -04:00
jacob1
63fe8e46b2
LIGH now lasts longer and expands frame-by-frame, fix LIGH stamping bug 2021-08-26 22:26:55 -04:00
Tamás Bálint Misius
eac92d1b04
Optimise undo history memory usage
By storing only the differences between Snapshots where possible.
NOTE: This may be reverted later if it causes too much trouble.
2021-08-04 17:19:15 +02:00
Tamás Bálint Misius
ea07244119
Refresh history code in GameMVC 2021-08-04 17:08:23 +02:00
Cracker1000
a3a45db3e4
Add AMBP and AMBM tools (#778)
Co-authored-by: Tamás Bálint Misius <lbphacker@gmail.com>
2021-07-29 17:50:24 +02:00
Tamás Bálint Misius
c0e065cc76
Fix certain Lua APIs mangling integers
Also fix a few warnings.
2021-07-18 20:33:50 +02:00
Tamás Bálint Misius
5f90a80fe3
Disallow GOL rulesets with no B states 2021-07-15 21:05:24 +02:00
jacob1
e80dc7b114
Preserve GoL deco in older saves; deco on builtin GoL no longer renders when decorations are off 2021-07-14 00:26:21 -04:00
jacob1
943f9d6c03
LITH explodes when overcharged, update charge graphics 2021-07-14 00:17:47 -04:00
jacob1
cea629c6c0
Make LITH->GLAS reaction easier 2021-07-13 23:01:02 -04:00
jacob1
f2d92bc3d7
Don't let GLOW ctype go negative 2021-07-13 21:50:36 -04:00
Tamás Bálint Misius
cfeda0fdba
Fix GOL showing up where it shouldn't
The underlying problem was that the spreading step in SimulateGOL would record activity concerning a cell to builtinGol even if said cell already housed a non-GOL particle. The culling step handles these records and purges them once it's done (thus builtinGol only ever has non-zero values inside SimulateGOL), except in this case, it saw the non-GOL particle and skipped the cell without purging the corresponding records. This would later let GOL spread seemingly out of nowhere.
2021-07-11 12:21:48 +02:00
moonheart08
a014c81ad6
Last minute explosiveness enhancement for LITH (#788) 2021-07-10 16:17:58 -04:00
catsoften
c6a52d1425 Prevent ROCK from repeatedly breaking into STNE and reforming under pressure 2021-07-10 00:18:46 -04:00
jacob1
8a788fac78
Misc minor changes to new elements
LITH: show .tmp2 in HUD, remove outdated comment
SLCN: update description
ROCK: form under pressure from both normal LAVA and LAVA(STNE), as these are basically the same thing
2021-07-09 22:09:24 -04:00
moonheart08
66c5287824
Adjust color of LITH (#787) 2021-07-04 14:55:20 -04:00
jacob1
fe49e58de8
Make ROCK more resistant to DEST (like CNCT is) 2021-07-03 23:34:38 -04:00
catsoften
e97925f0fd
Change PTNM reactions to take pressure from reacting particle's coordinates (#784) 2021-06-27 20:27:02 -04:00
jacob1
91a1f19c52
Adjust LITH color slightly so that it isn't the same as CNCT 2021-06-27 18:47:09 -04:00
jacob1
76699d2f7e
Make ROCK harder to get, greatly increase ACID resistance
This helps prevent ROCK from appearing in normal situations, which can easily get to pressure > 2 just from the movement of the falling LAVA.
2021-06-27 18:39:51 -04:00
Tamás Bálint Misius
dcf0764fd8
Return a reason for failure from sim.loadStamp 2021-06-21 08:04:32 +02:00
Tamás Bálint Misius
ffe730c615
Save ambient heat temperature and add it to options 2021-06-04 22:39:07 +02:00
Simon Robertshaw
10a6bb7120 Remove pastel glow on "inactive" GLOW, fix FIRE_ADD variables.
FIRE_ADD, firea/r/g/b variables adjusted to work similar to v51.1.
Use RNG to assist with smooth(er) transition from PMODE_FLAT to PMODE_ADD
2021-05-22 21:48:06 +01:00
Sam Robertson
2c207a934e
Makes GLOW element glow under pressure. Fixes #774
Co-authored-by: Tamás Bálint Misius <lbphacker@gmail.com>
2021-05-22 11:18:31 +02:00
jacob1
14be92c013
Prop tool - only check GoL rulestings / names for ctype
They are meaningless when applied to any other property, even .type
2021-05-19 00:04:23 -04:00
jacob1
a25fa700e2
Don't show GoL .tmp in HUD, check if create_part was successful while simulating GoL 2021-05-11 23:40:31 -04:00
jacob1
829c0bced5
Fix issue allowing drawing unlimited LIGH with 1x1 cursor
Also fix warnings from a previous commit
2021-05-10 21:04:08 -04:00
jacob1
aac6b7258c
Improve stack pasting behavior
It will now clear all particles in positions being pasted over
2021-05-10 00:02:27 -04:00
Tamás Bálint Misius
2e16eecae0
Fix a bunch of LDTC and DTEC issues
Namely: LDTC GoL detection, ctype-drawing and HUD rendering, alongside DTEC HUD rendering.
2021-04-18 20:32:32 +02:00
jacob1
f441626de4 Fix some issues in elementCount
Count goes negative if an element is killed due to .life=0 on the same frame an elementRecount is scheduled
element count skyrockets when recount is scheduled during game pause
Element count increases by a static amount when undoing, because it schedules a recount without clearing the old counts
2021-04-18 14:01:51 -04:00
Tamás Bálint Misius
11f6abdfca
Update elementCount when restoring a snapshot (fixes #592) 2021-04-18 15:48:10 +02:00
moonheart08
a3f5731a43
Add element LITH (#726)
Co-authored-by: Tamás Bálint Misius <lbphacker@gmail.com>
2021-04-17 00:01:26 +02:00
jacob1
ffb88259d6 Split Simulation::IsValidElement into IsElement and IsElementOrNone
Allows finer control over whether you want none included or not.
Fixes some invalid things being allowed for element 0 in legacy lua api
Fixes {ctype} signs showing 0 instead of NONE
2021-04-11 23:20:33 -04:00
Tamás Bálint Misius
1859125218
Fix undo not updating air block map 2021-04-11 21:44:33 +02:00
jacob1
da2ccc70fe Some ROCK fixes
Improve efficiency in FIRE logic, it no longer runs the check multiple times for each surrounding particle. RNG chances reduced accordingly.
Remove unnecessary code in init_can_move
Set Weight to 100, which is the proper max for weight
2021-03-30 23:14:53 -04:00
Tamás Bálint Misius
c7619387ac
Fix EXOT freezing upon failing to replicate a neighbour 2021-03-05 21:54:00 +01:00
Tamás Bálint Misius
92cb50505d
Make molten ROCK produce vertical clusters of GOLD (fixes #762)
Also make GOLD veins spread out a bit more.
2021-02-17 09:49:41 +01:00
Tamás Bálint Misius
4b7e85c2fb
Fix a metric ton of MSVC warnings 2021-02-15 21:24:44 +01:00
jacob1
d037178bb5 Fix infinite spark loops in photoelectric effect 2021-01-19 20:54:03 -05:00
Sebastián Mestre
36f661b87f
Clean up some code in Simulation::FloodINST (#758)
Co-authored-by: Tamás Bálint Misius <lbphacker@gmail.com>
2021-01-10 17:11:33 +01:00
Tamás Bálint Misius
8e21dc2646
Comply with another MSVC weirdness (see https://tpt.io/:24744) 2021-01-03 00:02:48 +01:00
Tamás Bálint Misius
e9bed49906
Fix PIPE/PPIP breakage on rotation (fixes #750) 2020-12-15 21:40:15 +01:00
Tamás Bálint Misius
360297c338
Mesonification 2020-12-14 20:16:52 +01:00
Tamás Bálint Misius
091764533d
Reset molten SLCN tmp in reactions to prevent interference with products 2020-11-26 09:19:56 +01:00
Tamás Bálint Misius
86a621741d
Preserve stacked particles in saves being placed (fixes #743) 2020-11-16 12:54:15 +01:00
Tamás Bálint Misius
88f97ff2ec
Another GOL rendering fix 2020-10-29 17:17:09 +01:00
Tamás Bálint Misius
1369dbc489
Fix rendering of built-in GOL in thumbnails 2020-10-26 12:33:20 +01:00
Tamás Bálint Misius
02a3dcbaa2
Fix replace mode to allow replacing with GOL types 2020-10-12 18:48:20 +02:00
Tamás Bálint Misius
5a5eace691
Fix built-in GOL types 2020-10-12 17:36:24 +02:00
Tamás Bálint Misius
ba72dc7a22
Custom GOL (#731)
Co-authored-by: jacob1 <jfu614@gmail.com>
2020-10-08 20:23:59 +02:00
RCAProduction
1f7e9095da
Add element ROCK (#724) 2020-10-08 01:27:25 +02:00
Tamás Bálint Misius
99c99132bd
Make energy particles visible to LSNS ant HSWC for reals (see 6052ef6) 2020-10-07 11:16:47 +02:00
Tamás Bálint Misius
02468d0786
Let ARAY control the life of all normal BRAY it spawns 2020-10-07 10:56:58 +02:00
Tamás Bálint Misius
6052ef6179
Make energy particles visible to LSNS ant HSWC for deserialization 2020-10-07 10:53:10 +02:00
Cracker1000
00ddc1f8be
Add VSNS (#707)
Co-authored-by: Tamás Bálint Misius <lbphacker@gmail.com>
2020-10-07 10:49:31 +02:00
Tamás Bálint Misius
88fd676cd2
Fix stasis walls not keeping dying GOL cells in stasis 2020-09-22 19:43:01 +02:00
Bowserinator
0959354178
Customize BRAY collision life (#712) 2020-07-26 19:17:43 +02:00
Tamás Bálint Misius
94353a9a3b
Remove leftover cooldown-related code from ARAY and DRAY 2020-07-26 19:05:05 +02:00
Bowserinator
41254a2f95
Add PTNM (Platinum) (#711) 2020-07-26 18:48:15 +02:00
moonheart08
85ab70adb3 Add a reaction to produce BCOL 2020-07-26 11:53:37 +02:00
moonheart08
9413a1f0b6
Introduce element 187, SLCN. (#704)
Add SLCN

Co-authored-by: moonheart08 <moonheart08@noreply.github.com>
Co-authored-by: Tamás Bálint Misius <lbphacker@gmail.com>
2020-07-26 11:45:50 +02:00
Tamás Bálint Misius
9fcf780c78
Necromancy is bad
This is very similar to the SPRK-PROT bug (fixed by 4aa58d6c)
in that the cause for a later crash is the free list of particles
being corrupted by messing with the .life property of a dead
particle.

The code in the loop body following this kill_part call has no
effect on other particles if the call were to happen. The only
thing this continue skips is increasing pressure under the now
dead particle.

Credit goes to @QuanTech for finding the problem, see id:2547788
(originally his save, I just saved to my alt account for future
reference).
2020-05-27 08:42:49 +02:00
QuanTech0
dda7747688
safeguard FloodParts and kill_part (#717) 2020-05-11 10:20:01 -04:00
jacob1
9188f7bf8b FRAY: use floating point instead of double for this subtraction 2020-05-09 13:50:42 -04:00
jacob1
3fc6b38111 DRAY: don't attempt to copy a particle if we stopped due to being out of bounds
(efficiency reasons only)
2020-05-04 20:54:56 -04:00
jacob1
6f845ed4b4 Fix unnecessary break in LSNS. Closes #713 2020-05-02 11:24:18 -04:00
QuanTech0
4efe5875ab Simulation::create_part sanity check 2020-04-26 21:00:41 -04:00
jacob1
323a850e16 Don't delete SPRK/METL in detector wall, don't allow drawing metal on detector wall
This fixes the only valid bug on the "Glitches" wiki page. All the rest were already fixed (multi-head stkm) or are not bugs (lava ice, "destroying" dmnd with dray)
2020-04-11 23:51:56 -04:00
Tamás Bálint Misius
fe15566d2c
Only change modes when the lock is being held, see 2333786 (fixes #700) 2020-03-23 23:08:52 +01:00
Tamás Bálint Misius
4f01130ecc
Restrict saved version to 95.0 if signs with macros are present 2020-02-23 23:37:01 +01:00
jacob1
ffea880da1 Fix bug where deco renders on EMBR in save thumbnails 2020-02-09 14:10:27 -05:00
jacob1
6b73b2dd9b Fix fighters sometimes loading from saves with no element 2020-02-08 11:10:53 -05:00
jacob1
ca8f4e3aac replace mode: reset created element back to default properties, instead of just changing type 2020-02-08 10:40:29 -05:00
Tamás Bálint Misius
3c6ae35cc4
Fix PMAPBITS compile-time sanity check 2020-01-24 22:25:15 +01:00
Tamás Bálint Misius
7330d0412a
Fix random warnings from clang 8.0.0 2020-01-21 14:43:22 +01:00
Tamás Bálint Misius
4d52531889
Ditch element and tool classes 2020-01-09 19:22:11 +01:00
QuanTech0
78203fc219 Division by Zero fix (#689) 2020-01-01 23:03:35 -05:00
jacob1
2576175762 remove unnecessary arguments to FloodINST. Fix random warning. 2019-12-23 00:34:21 -05:00
Secundario
a05e20f1bf Do a single CoordStack allocation per thread 2019-12-21 13:14:40 -05:00
jacob1
bf7d182de5 Add CreateAllowed and ChangeType events
Used in create_part, kill_part, and part_change_type, allows us to remove element-specific stuff in those functions
Note: difference between Create and ChangeType is that Create is called when we want to initialize default element properties, but ChangeType is called every time a particle is changed to that type, even if it doesn't need default properties set. ChangeType is mainly used for things that need accurate state tracking, like the stkm spawn status.
ChangeType is called every time a particle is changed to or from its type, which includes if the particle is deleted, and also Lua.

Neither of these functions are called when loading saves, that's probably an oversight, will fix later
2019-11-29 19:32:33 -05:00
jacob1
9993290b72 Add Create function, handles setting default properties for elements that need randomness or special code
Most of the switch statement in create_part is gone. There's a few others that I will get rid of in future commits. There will also be a CreateAllowed function, and a ChangeType. ChangeType will handle stuff that is duplicated in both create_part and part_change_type. Considering making a Destroy function instead of ChangeType, though.

Later on, Lua events will be made for all 3

Credit to jacksonmj for the original design of all of this, I copied it into my mod years ago
2019-11-28 00:22:17 -05:00
Tamás Bálint Misius
5c1ea5ef0d
Blacklist SPRK in PCLN's and PBCN's ctypeDraw function
Apparently it used to be blacklisted before ctype-drawing got redone.
2019-11-27 21:00:47 +01:00
jacob1
0078fb4c6f Add DefaultProperties, replaces some of the case statements in create_part
The rest will will in a commit soon that adds the Create event and some other stuff
Lua events will come after that
PLSM default temp lowered to MAX_TEMP
2019-11-25 22:08:18 -05:00
Tamás Bálint Misius
5f7dd033ec
Revert previous change, add NewtonianGravity element property instead 2019-10-17 22:29:24 +02:00
Tamás Bálint Misius
6b85231f23
Incorporate Gravity property into calculation of acceleration due to newtonian gravity 2019-10-16 01:27:48 +02:00