Skip to content

Commit 00d18ae

Browse files
committed
Merge remote-tracking branch 'upstream/develop' into random-anims
# Conflicts: # docs/New-or-Enhanced-Logics.md # docs/Whats-New.md # src/Ext/Anim/Hooks.AnimCreateUnit.cpp # src/Ext/AnimType/Body.h # src/Ext/Techno/Body.h # src/New/Entity/ShieldClass.cpp
2 parents 13e9ef1 + 57a1c58 commit 00d18ae

File tree

173 files changed

+9431
-4980
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

173 files changed

+9431
-4980
lines changed

.coderabbit.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ reviews:
77
auto_review:
88
enabled: false
99
chat:
10-
auto_reply: false
10+
auto_reply: false

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,6 @@ build
2626
cmake-*
2727
out
2828
.idea
29+
30+
# Python virtual environment for docs
31+
.venv/

.readthedocs.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ version: 2
77

88
# Set the version of Python and other tools you might need
99
build:
10-
os: ubuntu-22.04
10+
os: ubuntu-24.04
1111
tools:
12-
python: "3.8"
12+
python: "3.11"
1313

1414
# Build documentation in the docs/ directory with Sphinx
1515
sphinx:

CREDITS.md

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -235,13 +235,25 @@ This page lists all the individual contributions to the project by their author.
235235
- Air unit tracking fix for large range / `CellSpread`
236236
- Extra tint intensity for Iron Curtain & Force Shield
237237
- Option to enable parsing 8-bit RGB values from `[ColorAdd]` instead of RGB565
238-
- Customizing height at which subterranean units travel
238+
- Customizing height and speed at which subterranean units travel
239239
- AI superweapon delay timer customization
240240
- Disabling `MultipleFactory` bonus from specific BuildingType
241241
- Customizable ChronoSphere teleport delays for units
242242
- Allowed and disallowed types for `FactoryPlant`
243243
- Forbidding parallel AI queues for specific TechnoTypes
244244
- Nonprovocative Warheads
245+
- Customizing effect of level lighting on air units
246+
- Reimplemented `Airburst` & `Splits` logic with more customization options
247+
- Buildings considered as destroyable pathfinding obstacles
248+
- Animation visibility customization settings
249+
- Light effect customizations
250+
- Building unit repair customizations
251+
- Build area customizations
252+
- `Scorch` / `Flamer` fire animation customization
253+
- EM Pulse cannon logic improvements
254+
- `<Player @ X>` as owner for pre-placed objects
255+
- Custom exit cell for infantry factory
256+
- Vehicles keeping target on move command
245257
- **Morton (MortonPL)**:
246258
- `XDrawOffset` for animations
247259
- Shield passthrough & absorption
@@ -259,8 +271,9 @@ This page lists all the individual contributions to the project by their author.
259271
- Show designator & inhibitor range
260272
- Dump variables to file on scenario end / hotkey
261273
- "House owns TechnoType" and "House doesn't own TechnoType" trigger events
262-
- Help with docs
263274
- Voxel light source position customization
275+
- Extending `Power` to all TechnoTypes
276+
- Help with docs
264277
- **ChrisLv_CN** (work relicensed under [following permission](https://github.com/Phobos-developers/Phobos/blob/develop/images/ChrisLv-relicense.png)):
265278
- General assistance
266279
- Interceptor logic prototype
@@ -319,7 +332,13 @@ This page lists all the individual contributions to the project by their author.
319332
- Droppod properties dehardcode
320333
- Waypoint entering building together with engineer/agent bug fix
321334
- Skippable game save on scenario start
335+
- `InfDeath=9` versus jumpjet infantry 0 damage fix
322336
- Skip rally point line drawing when undeploying a building
337+
- Ares' `SW.Shots` hint on extended tooltips
338+
- Ares' Abductor weapon fix
339+
- Suppress Ares' swizzle warning when parsing tags and taskforces
340+
- Better fix for Ares academy not working on the initial payloads of vehicles built from a war factory
341+
- Fix Ares' InitialPayload for teams spawned by trigger actions
323342
- Misc code refactor & maintenance, CN doc fixes, bugfixes
324343
- **FlyStar**
325344
- Campaign load screen PCX support
@@ -345,32 +364,46 @@ This page lists all the individual contributions to the project by their author.
345364
- `TurretOffset` support for SHP vehicles
346365
- Customizable rocker amplitude
347366
- Customizable wake anim
367+
- Initial effort on optimization for crates' random distribution
348368
- **Fryone**
349369
- Customizable ElectricBolt Arcs
350370
- Sound entry on unit's creation
351371
- Auto-deploy/Deploy block on ammo change
352372
- Flashing Technos on selecting
353373
- Promotion animation
354374
- **ZivDero**
355-
- Allow giving ownership of buildings to players in Skirmish and MP using <Player @ A-H>
356375
- Re-enable the Veinhole Monster and Weeds from TS
357376
- Recreate the weed-charging of SWs like the TS Chemical Missile
358377
- Allow to change the speed of gas particles
359378
- **CrimRecya**
360379
- Fix `LimboKill` not working reliably
380+
- Allow using waypoints, area guard and attack move with aircraft
381+
- Fix `Stop` command not working so well in some cases
382+
- Fix aircraft `MovementZone` and `SpeedType` inconsistencies
383+
- Use 2D distance instead of 3D to check whether in air team members have arrived destination
384+
- Enhanced Straight trajectory
385+
- Enable Building Production Queue
386+
- Fix for sidebar not updating queued unit numbers when on hold
361387
- **Ollerus**
362388
- Build limit group enhancement
363389
- Customizable rocker amplitude
364390
- Randomized anims for several behaviors
365391
- **handama** - AI script action to jump back to previous script
392+
- **TaranDahl (航味麻酱)**
393+
- Skirmish AI "sell all buildings and set all technos to hunt" behavior dehardcode
394+
- Skirmish AI "gather when MCV deploy" behavior dehardcode
395+
- Global value of `RepairBaseNodes`
396+
- Skip anim delay for burst fire
397+
- **tyuah8** - Drive/Jumpjet/Ship/Teleport locomotor did not power on when it is un-piggybacked bugfix
398+
- **Aephiex** - initial fix for Ares academy not working on the initial payloads of vehicles built from a war factory
366399
- **Ares developers**
367400
- YRpp and Syringe which are used, save/load, project foundation and generally useful code from Ares
368401
- unfinished RadTypes code
369402
- prototype deployer fixes
370403
- Superweapon launch site & availability code
371404
- AI vehicle production update code
372405
- parts of TechnoType conversion placeholder code
373-
- **ststl, FlyStar, Saigyouji, JunJacobYoung** - Digital Display
406+
- **ststl, FlyStar, NaotoYuuki, Saigyouji, JunJacobYoung** - Digital Display
374407
- **SukaHati (Erzoid)** - Minimum interceptor guard range
375408
- **E1 Elite** - TileSet 255 and above bridge repair fix
376409
- **AutoGavy** - interceptor logic, Warhead critical hit logic
@@ -388,6 +421,7 @@ This page lists all the individual contributions to the project by their author.
388421
- **thomassneddon** - general assistance, knowledge about voxel lighting model
389422
- **Xkein** - general assistance, YRpp edits
390423
- **mevitar** - honorary shield tester *triple* award
424+
- **Phobos CN Tester Group (Reedom, Mantis, Swim Wing, Takitoru, Examon, AKB, Pusheen, ZQ, Claptrap, BunkerGeneral, Big J, Skywalker, ChickEmperor, Shifty, Mikain, Tobiichi Origami, Feiron, W_S502, Ailink, AbrahamMikhail, Tide, Fnfalsc, Yumeri_Rei, Nacho, Zhuzi, Ika_Aru)** - extensive and thorough testing
391425
- **Damfoos** - extensive and thorough testing
392426
- **Dmitry Volkov** - extensive and thorough testing
393427
- **Rise of the East community** - extensive playtesting of in-dev features

Phobos.vcxproj

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
</ProjectConfiguration>
1919
</ItemGroup>
2020
<ItemGroup>
21-
<ClCompile Include="src\Ext\Techno\Hooks.Cloak.cpp" />
21+
<ClCompile Include="src\Ext\TechnoType\Hooks.MatrixOp.cpp" />
2222
<ClCompile Include="src\New\Entity\AttachEffectClass.cpp" />
2323
<ClCompile Include="src\New\Type\AttachEffectTypeClass.cpp" />
2424
<ClCompile Include="src\Commands\Commands.cpp" />
@@ -63,10 +63,10 @@
6363
<ClCompile Include="src\Ext\Trigger\Hooks.cpp" />
6464
<ClCompile Include="src\Ext\Unit\Hooks.Crushing.cpp" />
6565
<ClCompile Include="src\Locomotion\TestLocomotionClass.cpp" />
66-
<ClCompile Include="src\Misc\Hooks.AssignHouses.cpp" />
6766
<ClCompile Include="src\Misc\Hooks.Gamespeed.cpp" />
6867
<ClCompile Include="src\Misc\Hooks.Ares.cpp" />
6968
<ClCompile Include="src\Misc\Hooks.Crates.cpp" />
69+
<ClCompile Include="src\Misc\Hooks.LightEffects.cpp" />
7070
<ClCompile Include="src\Misc\Hooks.VeinholeMonster.cpp" />
7171
<ClCompile Include="src\Misc\PhobosToolTip.cpp" />
7272
<ClCompile Include="src\Misc\TextInput.cpp" />
@@ -87,6 +87,7 @@
8787
<ClCompile Include="src\Ext\Building\Hooks.cpp" />
8888
<ClCompile Include="src\Ext\Building\Hooks.Grinding.cpp" />
8989
<ClCompile Include="src\Ext\Building\Hooks.Refinery.cpp" />
90+
<ClCompile Include="src\Ext\Building\Hooks.Production.cpp" />
9091
<ClCompile Include="src\Ext\Building\Hooks.Selling.cpp" />
9192
<ClCompile Include="src\Ext\BulletType\Body.cpp" />
9293
<ClCompile Include="src\Ext\Bullet\Body.cpp" />
@@ -119,21 +120,21 @@
119120
<ClCompile Include="src\Ext\Techno\Body.Update.cpp" />
120121
<ClCompile Include="src\Ext\Techno\WeaponHelpers.cpp" />
121122
<ClCompile Include="src\Ext\Techno\Hooks.cpp" />
123+
<ClCompile Include="src\Ext\Techno\Hooks.Cloak.cpp" />
122124
<ClCompile Include="src\Ext\Techno\Hooks.Misc.cpp" />
123125
<ClCompile Include="src\Ext\Techno\Hooks.Firing.cpp" />
124-
<ClCompile Include="src\Ext\Techno\Hooks.Shield.cpp" />
126+
<ClCompile Include="src\Ext\Techno\Hooks.ReceiveDamage.cpp" />
127+
<ClCompile Include="src\Ext\Techno\Hooks.TargetEvaluation.cpp" />
125128
<ClCompile Include="src\Ext\Techno\Hooks.Transport.cpp" />
126-
<ClCompile Include="src\Ext\Techno\Hooks.Disguise.cpp" />
127-
<ClCompile Include="src\Ext\Techno\Hooks.DeploysInto.cpp" />
128129
<ClCompile Include="src\Ext\TerrainType\Body.cpp" />
129130
<ClCompile Include="src\Ext\TerrainType\Hooks.cpp" />
130131
<ClCompile Include="src\Ext\TerrainType\Hooks.Passable.cpp" />
131132
<ClCompile Include="src\Ext\Unit\Hooks.DeployFire.cpp" />
132133
<ClCompile Include="src\Ext\Unit\Hooks.DisallowMoving.cpp" />
134+
<ClCompile Include="src\Ext\Unit\Hooks.DeploysInto.cpp" />
133135
<ClCompile Include="src\Ext\Unit\Hooks.Jumpjet.cpp" />
134136
<ClCompile Include="src\Ext\Unit\Hooks.Unload.cpp" />
135137
<ClCompile Include="src\Ext\WarheadType\Detonate.cpp" />
136-
<ClCompile Include="src\Ext\Techno\Hooks.AttachEffect.cpp" />
137138
<ClCompile Include="src\Ext\Techno\Hooks.WeaponEffects.cpp" />
138139
<ClCompile Include="src\Ext\Techno\Hooks.Tint.cpp" />
139140
<ClCompile Include="src\Ext\Techno\Hooks.WeaponRange.cpp" />
@@ -177,7 +178,7 @@
177178
<ClCompile Include="src\Utilities\GeneralUtils.cpp" />
178179
<ClCompile Include="src\Utilities\Patch.cpp" />
179180
<ClCompile Include="src\Utilities\AresHelper.cpp" />
180-
<ClCompile Include="src\Utilities\AresAddressTable.cpp" />
181+
<ClCompile Include="src\Utilities\AresAddressInit.cpp" />
181182
<ClCompile Include="src\Misc\SyncLogging.cpp" />
182183
<ClCompile Include="YRpp\StaticInits.cpp" />
183184
</ItemGroup>

README.md

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,18 @@
1010
> The project is currently not maintained actively enough and thus we are looking for active maintainers at the moment. Please message us [in Discord channel](https://discord.gg/sZeMzz6qVg) (or PM Kerbiter directly).
1111
1212
# Phobos
13+
1314
...is a community engine extension project providing a set of new features and fixes for Yuri's Revenge based on [modified YRpp](https://github.com/Metadorius/YRpp) and [Syringe](https://github.com/Ares-Developers/Syringe) to allow injecting code. It's meant to accompany [Ares](https://github.com/Ares-Developers/Ares) rather than replace it, thus it won't introduce incompatibilities.
1415

1516
While Phobos is independent of Ares and does NOT require Ares specifically to function, Phobos complements some of the features found in Ares and vice versa.
1617

17-
You can discuss the project at a dedicated [channel on C&C Mod Haven](https://discord.gg/sZeMzz6qVg).
18+
Community
19+
---------
20+
21+
As the project is international and English is currently studied the most commonly as a second language, it's the main project language. We do not limit the creation of language-specific community groups though, because we understand that many may not know English as well as their native language and/or may have trouble accessing Discord.
22+
23+
- **[🌐 International Discord channel on C&C Mod Haven](https://discord.gg/sZeMzz6qVg)**
24+
- [🇨🇳 Chinese QQ Phobos group / Phobos 中文用户QQ群 (630590659)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=f_h7TZoVX_8--ZedVFBMmjRrLBIzjMKJ&authKey=QfNyW4DZUFqL3ZKzGL5PgLUWTnISj0myWn4WGtPPQmi3F%2FP3vfnuBd3YjLFk%2BU94&noverify=0&group_code=630590659)
1825

1926
Downloads
2027
---------
@@ -84,9 +91,9 @@ Credits
8491

8592
### Developers
8693
- **Belonit (Gluk-v48)** - project author
87-
- **Kerbiter (Metadorius)** - project co-author, BDFL, maintainer (semi-active for the time being; [Patreon](https://www.patreon.com/kerbiter), PM me for PayPal to avoid fees)
94+
- **Kerbiter (Metadorius)** - project co-author, BDFL, maintainer ([Patreon](https://www.patreon.com/kerbiter), PM me for PayPal to avoid fees)
8895
- **Starkku** - co-maintainer, developer ([Patreon](https://www.patreon.com/Starkku))
89-
- **Uranusian (Thrifinesma)** - retired developer, CN community ambassador
96+
- **Uranusian (Thrifinesma)** - developer, CN community ambassador
9097
- **secsome (SEC-SOME)** - developer
9198
- **Otamaa (Fahroni, BoredEXE)** - developer ([PayPal](https://paypal.me/GeneralOtama))
9299
- **FS-21** - developer

YRpp

docs/AI-Scripting-and-Mapping.md

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,27 @@ This page describes all AI scripting and mapping related additions and changes i
1818

1919
### Base node repairing
2020

21-
- In singleplayer campaign missions you can now decide whether AI can repair the base nodes / buildings delivered by SW (Ares) by setting `RepairBaseNodes`.
21+
- In singleplayer campaign missions you can now decide whether AI can repair the base nodes / buildings delivered by SW (Ares).
22+
- You can control it globally by setting `[Basic]->RepairBaseNodes`, or locally by setting the flag with same name in `[Some House]` in certain map file. The global one will be overriden if the local one is set.
23+
24+
In rulesmd.ini:
25+
```ini
26+
[Basic]
27+
RepairBaseNodes=false ; boolean
28+
```
2229

2330
In map file:
2431
```ini
2532
[Country House]
26-
RepairBaseNodes=false,false,false ; list of 3 booleans indicating whether AI repair basenodes in Easy / Normal / Difficult game diffculty.
33+
RepairBaseNodes= ; list of 3 booleans indicating whether AI repair basenodes in Easy / Normal / Difficult game diffculty.
2734
```
2835

2936
### Default loading screen and briefing offsets
3037

3138
- It is now possible to set defaults for singleplayer map loading screen briefing pixel offsets and the loading screen images and palette that are used if there are no values defined for the map itself.
3239
- Note that despite the key name being `DefaultLS800BkgdPal`, this applies to both shapes just like the original scenario-specific `LS800BkgdPal` does.
3340

34-
- In `missionmd.ini`:
41+
In `missionmd.ini`:
3542
```ini
3643
[Defaults]
3744
DefaultLS640BriefLocX=0 ; integer
@@ -45,12 +52,12 @@ DefaultLS800BkgdPal= ; filename - including the .pal extension
4552

4653
### MCV redeploying
4754

48-
- You can now decide whether MCV can redeploy in singleplayer campaign missions by setting `MCVRedeploys`. Overrides `[MultiplayerDialogSettings]`->`MCVRedeploys` only in singleplayer campaign missions.
55+
- You can now decide whether MCV can redeploy in singleplayer campaign missions by setting `[Basic]->MCVRedeploys`. Overrides `[MultiplayerDialogSettings]`->`MCVRedeploys` only in singleplayer campaign missions.
4956

5057
In map file:
5158
```ini
5259
[Basic]
53-
MCVRedeploys=false ; boolean
60+
MCVRedeploys= ; boolean
5461
```
5562

5663
### Set par times and related string labels in missionmd.ini
@@ -235,6 +242,7 @@ In `aimd.ini`:
235242
[SOMESCRIPTTYPE] ; ScriptType
236243
x=10100,n ; integer, time in ingame seconds
237244
```
245+
238246
##### `10101` Wait Until Ammo is Full
239247

240248
- If the TaskForce contains unit(s) that use ammo then the the script will not continue until all these units have fully refilled the ammo.
@@ -244,6 +252,7 @@ In `aimd.ini`:
244252
[SOMESCRIPTTYPE] ; ScriptType
245253
x=10101,0
246254
```
255+
247256
##### `10102` Regroup Temporarily Around the Team Leader
248257

249258
- Puts the TaskForce into Area Guard mode for the given amount of time around the Team Leader (this unit remains almost immobile until the action ends). The default radius around the leader is `[General] > CloseEnough` and the units will not leave that area.
@@ -431,6 +440,7 @@ x=16005,0
431440
### `18000-18999` Variable Manipulation
432441

433442
#### `18000-18023` Edit Variable
443+
434444
- Operate a variable's value
435445
- The variable's value type is int16 instead of int32 in trigger actions for some reason, which means it ranges from -2^15 to 2^15-1.
436446
- Any numbers exceeding this limit will lead to unexpected results!
@@ -442,6 +452,7 @@ x=i,n ; where 18000 <= i <= 18023, n is made up of two parts, the lo
442452
```
443453

444454
#### `18024 - 18047` Edit Variable using Local Variable
455+
445456
- Operate a variable's value using a local variable's value
446457
- Similar to 18000-18023, but the number to operate the value is being read from a local variable
447458

@@ -452,6 +463,7 @@ x=i,n ; where 18024 <= i <= 18047, n is made up of two parts, the lo
452463
```
453464

454465
#### `18000 - 18071` Edit Variable using Global Variable
466+
455467
- Operate a variable's value using a global variable's value
456468
- Similar to 18000-18023, but the number to operate the value is being read from a global variable
457469

@@ -468,6 +480,7 @@ This category is empty for now.
468480
## Trigger Actions
469481

470482
### `500` Save Game
483+
471484
- Save the current game immediately (singleplayer game only).
472485
- These vanilla CSF entries will be used: `TXT_SAVING_GAME`, `TXT_GAME_WAS_SAVED` and `TXT_ERROR_SAVING_GAME`.
473486
- The save's description will look like `MapDescName - CSFText`.
@@ -482,6 +495,7 @@ ID=ActionCount,[Action1],500,4,[CSFKey],0,0,0,0,A,[ActionX]
482495
```
483496

484497
### `501` Edit Variable
498+
485499
- Operate a variable's value
486500
- The variable's value type is int32, which means it ranges from -2^31 to 2^31-1.
487501
- Any numbers exceeding this limit will lead to unexpected results!
@@ -510,6 +524,7 @@ ID=ActionCount,[Action1],501,0,[VariableIndex],[Operation],[Number],[IsGlobalVar
510524
| 11 | CurrentValue = CurrentValue and Number |
511525

512526
### `502` Generate random number
527+
513528
- Generate a random integer ranged in [Min, Max] and store it in a given variable
514529

515530
In `mycampaign.map`:
@@ -521,6 +536,7 @@ ID=ActionCount,[Action1],502,0,[VariableIndex],[Min],[Max],[IsGlobalVariable],0,
521536
```
522537

523538
### `503` Print variable value
539+
524540
- Print a variable value to the message list
525541

526542
In `mycampaign.map`:
@@ -532,6 +548,7 @@ ID=ActionCount,[Action1],503,[VariableIndex],0,[IsGlobalVariable],0,0,0,A,[Actio
532548
```
533549

534550
### `504` Binary Operation
551+
535552
- Operate a variable's value with another variable's value
536553
- Similar to 501, but the operation number is read from another variable
537554

@@ -597,6 +614,7 @@ ID=ActionCount,[Action1],510,0,0,[MCVRedeploy],0,0,0,A,[ActionX]
597614
## Trigger events
598615

599616
### `500-511` Variable comparation
617+
600618
- Compares the variable's value with given number
601619

602620
In `mycampaign.map`:
@@ -623,6 +641,7 @@ ID=EventCount,[Event1],[EVENTID],2,[VariableIndex],[Param],[EventX]
623641
| 511 | CurrentValue & Number | Yes |
624642

625643
### `512-523` Variable comparation with local variable
644+
626645
- Compares the variable's value with given local variable value
627646

628647
In `mycampaign.map`:
@@ -649,6 +668,7 @@ ID=EventCount,[Event1],[EVENTID],2,[VariableIndex],[LocalVariableIndex],[EventX]
649668
| 523 | CurrentValue & LocalVariableValue | Yes |
650669

651670
### `524-535` Variable comparation with global variable
671+
652672
- Compares the variable's value with given global variable value
653673

654674
In `mycampaign.map`:
@@ -685,6 +705,7 @@ ID=EventCount,...,600,2,0,0,...
685705
```
686706

687707
### `601-602` House owns/doesn't own Techno Type
708+
688709
- 601: Springs when specified house owns at least 1 instance of set TechnoType.
689710
- 602: Springs when specified house doesn't own a single instance of set TechnoType.
690711
- Multiplayer houses (indices 4475 through 4482) are supported.
@@ -702,6 +723,7 @@ ID=EventCount,...,[EVENTID],2,[HouseIndex],[TechnoType],...
702723
```
703724

704725
### `604-605` Checking if a specific Techno enters in a cell
726+
705727
- 604: Checks if the techno that entered in the cell has the same ID specified in the event.
706728
- 605: Checks if the techno that entered in the cell appears in the selected list in `AITargetTypes`.
707729
- `HouseIndex` can be customized to focus in a specified house.

0 commit comments

Comments
 (0)