Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/develop' into develop-QuickUnl…
Browse files Browse the repository at this point in the history
…oader
  • Loading branch information
CrimRecya committed Feb 16, 2025
2 parents 15aa304 + dbf7f74 commit bb62e4a
Show file tree
Hide file tree
Showing 68 changed files with 5,293 additions and 668 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,6 @@ build
cmake-*
out
.idea

# Python virtual environment for docs
.venv/
4 changes: 2 additions & 2 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ version: 2

# Set the version of Python and other tools you might need
build:
os: ubuntu-22.04
os: ubuntu-24.04
tools:
python: "3.8"
python: "3.11"

# Build documentation in the docs/ directory with Sphinx
sphinx:
Expand Down
27 changes: 25 additions & 2 deletions CREDITS.md
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,8 @@ This page lists all the individual contributions to the project by their author.
- `Scorch` / `Flamer` fire animation customization
- EM Pulse cannon logic improvements
- `<Player @ X>` as owner for pre-placed objects
- Custom exit cell for infantry factory
- Vehicles keeping target on move command
- **Morton (MortonPL)**:
- `XDrawOffset` for animations
- Shield passthrough & absorption
Expand All @@ -269,8 +271,9 @@ This page lists all the individual contributions to the project by their author.
- Show designator & inhibitor range
- Dump variables to file on scenario end / hotkey
- "House owns TechnoType" and "House doesn't own TechnoType" trigger events
- Help with docs
- Voxel light source position customization
- Extending `Power` to all TechnoTypes
- Help with docs
- **ChrisLv_CN** (work relicensed under [following permission](https://github.com/Phobos-developers/Phobos/blob/develop/images/ChrisLv-relicense.png)):
- General assistance
- Interceptor logic prototype
Expand Down Expand Up @@ -361,6 +364,7 @@ This page lists all the individual contributions to the project by their author.
- `TurretOffset` support for SHP vehicles
- Customizable rocker amplitude
- Customizable wake anim
- Initial effort on optimization for crates' random distribution
- **Fryone**
- Customizable ElectricBolt Arcs
- Sound entry on unit's creation
Expand All @@ -375,15 +379,34 @@ This page lists all the individual contributions to the project by their author.
- Fix `LimboKill` not working reliably
- Allow using waypoints, area guard and attack move with aircraft
- Fix `Stop` command not working so well in some cases
- Fix aircraft `MovementZone` and `SpeedType` inconsistencies
- Use 2D distance instead of 3D to check whether in air team members have arrived destination
- Enhanced Straight trajectory
- Enable Building Production Queue
- Fix for sidebar not updating queued unit numbers when on hold
- New Parabola trajectory
- Enhanced Bombard trajectory
- Simplified unloading for miners
- **Ollerus**
- Build limit group enhancement
- Customizable rocker amplitude
- Allowed `AuxBuilding` and Ares' `SW.Aux/NegBuildings` to count building upgrades
- Type select for buildings (doc)
- Enhanced Bombard trajectory
- **NaotoYuuki**
- Vertical & meteor trajectory projectile prototypes
- **handama** - AI script action to jump back to previous script
- **TaranDahl (航味麻酱)**
- Skirmish AI "sell all buildings and set all technos to hunt" behavior dehardcode
- Skirmish AI "gather when MCV deploy" behavior dehardcode
- Global value of `RepairBaseNodes`
- Skip anim delay for burst fire
- Type select for buildings (code)
- Raise alert when technos are taking damage
- Toggle waypoint for building
- Parasite returning bug fix
- Bunkerable checks dehardcode
- Prevent the units with locomotors that cause problems from entering the tank bunker
- Simplified unloading for miners
- **tyuah8** - Drive/Jumpjet/Ship/Teleport locomotor did not power on when it is un-piggybacked bugfix
- **Aephiex** - initial fix for Ares academy not working on the initial payloads of vehicles built from a war factory
Expand All @@ -394,7 +417,7 @@ This page lists all the individual contributions to the project by their author.
- Superweapon launch site & availability code
- AI vehicle production update code
- parts of TechnoType conversion placeholder code
- **ststl, FlyStar, Saigyouji, JunJacobYoung** - Digital Display
- **ststl, FlyStar, NaotoYuuki, Saigyouji, JunJacobYoung** - Digital Display
- **SukaHati (Erzoid)** - Minimum interceptor guard range
- **E1 Elite** - TileSet 255 and above bridge repair fix
- **AutoGavy** - interceptor logic, Warhead critical hit logic
Expand Down
2 changes: 2 additions & 0 deletions Phobos.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
<ClCompile Include="src\Ext\Bullet\Trajectories\BombardTrajectory.cpp" />
<ClCompile Include="src\Ext\Bullet\Trajectories\PhobosTrajectory.cpp" />
<ClCompile Include="src\Ext\Bullet\Trajectories\StraightTrajectory.cpp" />
<ClCompile Include="src\Ext\Bullet\Trajectories\ParabolaTrajectory.cpp" />
<ClCompile Include="src\Ext\CaptureManager\Hooks.cpp" />
<ClCompile Include="src\Ext\CaptureManager\Body.cpp" />
<ClCompile Include="src\Ext\OverlayType\Body.cpp" />
Expand Down Expand Up @@ -200,6 +201,7 @@
<ClInclude Include="src\Ext\Bullet\Trajectories\BombardTrajectory.h" />
<ClInclude Include="src\Ext\Bullet\Trajectories\PhobosTrajectory.h" />
<ClInclude Include="src\Ext\Bullet\Trajectories\StraightTrajectory.h" />
<ClInclude Include="src\Ext\Bullet\Trajectories\ParabolaTrajectory.h" />
<ClInclude Include="src\Ext\OverlayType\Body.h" />
<ClInclude Include="src\Ext\ParticleType\Body.h" />
<ClInclude Include="src\Ext\Sidebar\Body.h" />
Expand Down
17 changes: 13 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,18 @@
> 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).
# Phobos

...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.

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.

You can discuss the project at a dedicated [channel on C&C Mod Haven](https://discord.gg/sZeMzz6qVg).
Community
---------

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.

- **[🌐 International Discord channel on C&C Mod Haven](https://discord.gg/sZeMzz6qVg)**
- [🇨🇳 Chinese QQ Phobos group](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=f_h7TZoVX_8--ZedVFBMmjRrLBIzjMKJ&authKey=QfNyW4DZUFqL3ZKzGL5PgLUWTnISj0myWn4WGtPPQmi3F%2FP3vfnuBd3YjLFk%2BU94&noverify=0&group_code=630590659)(630590659)

Downloads
---------
Expand Down Expand Up @@ -47,8 +54,10 @@ Documentation
-------------

- [Official docs](https://phobos.readthedocs.io) (also available in [Chinese](https://phobos.readthedocs.io/zh_CN/latest))
- [Community Chinese docs](https://docs.qq.com/doc/p/dc3da1ce39a6e787b6e133f7d33d6aebef581cb4)
- Because the Chinese translation of the official docs is currently underdeveloped, at the time it is recommended to use the community docs for Chinese users.

You can switch between versions (displays latest develop nightly version by default) in the bottom left corner, as well as download a PDF version.
You can switch between versions (displays latest develop nightly version by default) in the bottom right corner, as well as download a PDF version.

The documentation is split by a few major categories, each represented with a page on the sidebar. Each page has its contents grouped into multiple subcategories, be it buildings, technotypes, infantries, superweapons or something else.

Expand Down Expand Up @@ -84,9 +93,9 @@ Credits

### Developers
- **Belonit (Gluk-v48)** - project author
- **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)
- **Kerbiter (Metadorius)** - project co-author, BDFL, maintainer ([Patreon](https://www.patreon.com/kerbiter), PM me for PayPal to avoid fees)
- **Starkku** - co-maintainer, developer ([Patreon](https://www.patreon.com/Starkku))
- **Uranusian (Thrifinesma)** - retired developer, CN community ambassador
- **Uranusian (Thrifinesma)** - developer, CN community ambassador
- **secsome (SEC-SOME)** - developer
- **Otamaa (Fahroni, BoredEXE)** - developer ([PayPal](https://paypal.me/GeneralOtama))
- **FS-21** - developer
Expand Down
2 changes: 1 addition & 1 deletion YRpp
22 changes: 18 additions & 4 deletions docs/AI-Scripting-and-Mapping.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ This page describes all AI scripting and mapping related additions and changes i

- Script action `Move to cell` now obeys YR cell calculation now. Using `1000 * Y + X` as its cell value. (was `128 * Y + X` as it's a RA1 leftover)
- The game now can reads waypoints ranges in [0, 2147483647]. (was [0,701])
- Map trigger action `41 Play Animation At...` can now create 'non-inert' animations which can play sounds, deal damage and apply `TiberiumChainReaction` if a parameter is set (needs [following changes to `fadata.ini`](Whats-New.md#for-map-editor-final-alert-2).
- Map trigger action `125 Build At...` can now play buildup anim and becomes singleplayer-AI-repairable optionally (needs [following changes to `fadata.ini`](Whats-New.md#for-map-editor-final-alert-2).
- Map trigger action `41 Play Animation At...` can now create 'non-inert' animations which can play sounds, deal damage and apply `TiberiumChainReaction` if a parameter is set (needs [following changes to `fadata.ini`](Whats-New.md#for-map-editor-final-alert-2)).
- Map trigger action `125 Build At...` can now play buildup anim and becomes singleplayer-AI-repairable optionally (needs [following changes to `fadata.ini`](Whats-New.md#for-map-editor-final-alert-2)).
- Both Global Variables (`VariableNames` in `rulesmd.ini`) and Local Variables (`VariableNames` in map) are now unlimited.
- Script action `Deploy` now has vehicles with `DeploysInto` searching for free space to deploy at if failing to do so at initial location, instead of simply getting stuck.
- Teams spawned by trigger action 7,80,107 can use IFV and opentopped logic normally. `InitialPayload` logic from Ares is not supported yet.
Expand Down Expand Up @@ -38,7 +38,7 @@ RepairBaseNodes= ; list of 3 booleans indicating whether AI re
- 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.
- Note that despite the key name being `DefaultLS800BkgdPal`, this applies to both shapes just like the original scenario-specific `LS800BkgdPal` does.

- In `missionmd.ini`:
In `missionmd.ini`:
```ini
[Defaults]
DefaultLS640BriefLocX=0 ; integer
Expand All @@ -54,7 +54,6 @@ DefaultLS800BkgdPal= ; filename - including the .pal extension

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


In map file:
```ini
[Basic]
Expand Down Expand Up @@ -243,6 +242,7 @@ In `aimd.ini`:
[SOMESCRIPTTYPE] ; ScriptType
x=10100,n ; integer, time in ingame seconds
```

##### `10101` Wait Until Ammo is Full

- 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.
Expand All @@ -252,6 +252,7 @@ In `aimd.ini`:
[SOMESCRIPTTYPE] ; ScriptType
x=10101,0
```

##### `10102` Regroup Temporarily Around the Team Leader

- 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.
Expand Down Expand Up @@ -439,6 +440,7 @@ x=16005,0
### `18000-18999` Variable Manipulation

#### `18000-18023` Edit Variable

- Operate a variable's value
- 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.
- Any numbers exceeding this limit will lead to unexpected results!
Expand All @@ -450,6 +452,7 @@ x=i,n ; where 18000 <= i <= 18023, n is made up of two parts, the lo
```

#### `18024 - 18047` Edit Variable using Local Variable

- Operate a variable's value using a local variable's value
- Similar to 18000-18023, but the number to operate the value is being read from a local variable

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

#### `18000 - 18071` Edit Variable using Global Variable

- Operate a variable's value using a global variable's value
- Similar to 18000-18023, but the number to operate the value is being read from a global variable

Expand All @@ -476,6 +480,7 @@ This category is empty for now.
## Trigger Actions

### `500` Save Game

- Save the current game immediately (singleplayer game only).
- These vanilla CSF entries will be used: `TXT_SAVING_GAME`, `TXT_GAME_WAS_SAVED` and `TXT_ERROR_SAVING_GAME`.
- The save's description will look like `MapDescName - CSFText`.
Expand All @@ -490,6 +495,7 @@ ID=ActionCount,[Action1],500,4,[CSFKey],0,0,0,0,A,[ActionX]
```

### `501` Edit Variable

- Operate a variable's value
- The variable's value type is int32, which means it ranges from -2^31 to 2^31-1.
- Any numbers exceeding this limit will lead to unexpected results!
Expand Down Expand Up @@ -518,6 +524,7 @@ ID=ActionCount,[Action1],501,0,[VariableIndex],[Operation],[Number],[IsGlobalVar
| 11 | CurrentValue = CurrentValue and Number |

### `502` Generate random number

- Generate a random integer ranged in [Min, Max] and store it in a given variable

In `mycampaign.map`:
Expand All @@ -529,6 +536,7 @@ ID=ActionCount,[Action1],502,0,[VariableIndex],[Min],[Max],[IsGlobalVariable],0,
```

### `503` Print variable value

- Print a variable value to the message list

In `mycampaign.map`:
Expand All @@ -540,6 +548,7 @@ ID=ActionCount,[Action1],503,[VariableIndex],0,[IsGlobalVariable],0,0,0,A,[Actio
```

### `504` Binary Operation

- Operate a variable's value with another variable's value
- Similar to 501, but the operation number is read from another variable

Expand Down Expand Up @@ -605,6 +614,7 @@ ID=ActionCount,[Action1],510,0,0,[MCVRedeploy],0,0,0,A,[ActionX]
## Trigger events

### `500-511` Variable comparation

- Compares the variable's value with given number

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

### `512-523` Variable comparation with local variable

- Compares the variable's value with given local variable value

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

### `524-535` Variable comparation with global variable

- Compares the variable's value with given global variable value

In `mycampaign.map`:
Expand Down Expand Up @@ -693,6 +705,7 @@ ID=EventCount,...,600,2,0,0,...
```

### `601-602` House owns/doesn't own Techno Type

- 601: Springs when specified house owns at least 1 instance of set TechnoType.
- 602: Springs when specified house doesn't own a single instance of set TechnoType.
- Multiplayer houses (indices 4475 through 4482) are supported.
Expand All @@ -710,6 +723,7 @@ ID=EventCount,...,[EVENTID],2,[HouseIndex],[TechnoType],...
```

### `604-605` Checking if a specific Techno enters in a cell

- 604: Checks if the techno that entered in the cell has the same ID specified in the event.
- 605: Checks if the techno that entered in the cell appears in the selected list in `AITargetTypes`.
- `HouseIndex` can be customized to focus in a specified house.
Expand Down
Loading

0 comments on commit bb62e4a

Please sign in to comment.