Jump to content

Dune 2000 Singleplayer game patching (new features and bug fixes) + D2kEditor 2.11 release


Klofkac
 Share

Recommended Posts

Update from 2021-09-13:

2) Events system
2a) General changes
- Added "Auto-block" and "Blocked" event property. If "Blocked" flag is set, the event won't execute even
  if all conditions are true for that event.
  If "Auto-block" is set, then event will automatically block itself when it is executed.
  The "Auto-block" is basically "Execute once" behavior without using an additional "Flag" condition
  and "Set Flag" event, the flag is integrated into the event itself.

2b) Original event type changes
Allegiance: Added "Both-sided" option so you can change diplomacy in both directions within a single event
Play Sound: Can now have two types: "Global" (original behavior) and "Point" (will make sound at
            specific coordinates)
Set Cash: Should work without crashes, added three operations: "Set", "Plus" and "Minus"
Set Tech: Added option to immediately update available buildings and units 
Reveal map: Radius 0 (reveal whole map) will properly reveal radar map
Show Message: Customizable message duration (the Unknown value is now used as duration in ticks)

2c) New event types
Switch My Side: You can now change the side you play as (like the Debug feature) in the middle of mission.
                You can also turn off AI on side you switch to and turn on AI on side you switch from.
                "Reveal Base" option will also reveal tiles seen by buildings of the target side.
Hide Map: Hides all map (like Hide Map crate type). If executed periodically, it can be used to simulate 
          "Fog of War" mechanics - useful to mimic "darkness" (like inside caves).
Un/block Event: Changes the "blocked" state of specific event
Damage Tiles: Will cause damage to specific tile, like it was hit by specified weapon, without shooting
              a projectile. 
              "Player": The side which gets score for killing buildings/units.
              "Pixel position": Pixel-precise target coordinates: 
                                [16 , 16] = center of tile, [0 , 0] = top-left, [31 , 31] = bottom-right
              "Rand. spread": Random inaccuracy (like Death Hand) in X and Y axis in pixels (32 = 1 tile)
              "Spread type": Random distribution in either square (rectangle) or circe (ellipse) shape
              "Hit explosion": Whether to show weapon's hit animation at target point
Add Unit: Add a single unit at specified place. The unit can move in any direction after it is spawned:
          "Random": works is same way as when a building is destroyed/sold and infantry coming out of it 
                    will move in random direction
          Specific direction: works in same way as when a unit comes out of barracks/factory
Add Building: Adds building at specified place. You can add building either with or without concrete,
              either instantly or with buildup animation, and also add refinery without a harvester
              coming with it.
Add Projectile: Shoots projectile of a specific weapon from source position to target position.
                Source position is always center of specified tile.
                For target position you can specify "Pixel position" and "Rand. spread" in same way
                "Play sound": Whether to play weapon's firing sound from source tile
                Note that the distance from source to target is limited due to computation limitations
                to about 70 tiles.
Add Explosion: Makes an animation at specified position. "Player" will specify color of deviator dust.
               You can specify "Pixel position" and "Rand. spread" in same way.
               "Play sound": Whether to play explosion's sound from the tile
Add Crate: Add any type of crate during game. 
           "Ext. data": Extension data, have different meaning for each crate type
           "Respawns": Number of respawns of Spice Bloom Spawner
           "Expiration": Time in ticks after which crate will disappear or spice bloom rises/explodes
Add Concrete: Add concrete for specific side. If "Tile bitmask" is zero, it fills specified area
              with concrete (only buildable tiles). If "Tile bitmask" is nonzero, it places concrete
              of defined shape (up to 4*4 size, only buildable tiles) and reveals the tiles.
Spice Bloom: Simulates explosion of a spice bloom crate at specified place.
Shake Screen: Shakes screen for specified duration of ticks
Center Viewport: Centers camera view at specified place. If executed periodically, it locks the screen.
Change Map Block: Changes tiles at specified place to different tiles. Maximum is 12 tiles in single
                  event due to data size limitation (i.e. 4*3 area, 2*6 area).
                  If the target tile is not buildable, buildings and concrete on it will be destroyed
                  (except buildings which do not require concrete).
                  If target tile does not have "drive on" attribute, vehicles on it will be destroyed.
                  If target tile does not have "walk on" attribute, infantry on it will be killed.
                  If target tile does not have "sandy" attribute, spice on it will be removed.
                  If target tile has "occupied by building/unit/infantry" attribute, units on it will
                  be killed in respective way.
                  Tile attributes will be changed to target tile's attributes, but building/unit owner
                  will be preserved.
Transform Tiles: Similar to "Change Map Block", but you can globally change specific tiles across whole
                 map into their target counterparts. You can specify up to 6 "from-to" tile pairs.
Change Tile Attributes: You can change attributes of tiles in specified map area.
                        Either set attributes to absolute balue, or add or remove specified attributes.
Change Tile Damage: Manipulates with tile's "Damage" property. The rock and sand craters are driven by
                    tile's damage property (the more damage the bigger craters).
                    You can set damage of tiles in specified map area to specific value or add/substract
                    specific amount of damage. The damage range is 0 (healthy) to 255 (biggest craters).

3) Bug fixes
- When you change side you play as using Debug menu, it will restore to original after restarting map
  (does not work when you save game with the side changed and load it back)
- Exclude OPTIONS.AUD and SCORE.AUD music tracks from random music rotation

4) Extensions and improvements
- Preserve original tiles beneath spice, concrete and building skirt tiles after spice/concrete/building
  is removed
- Concrete pre-paced on map using specific tiles having "concrete" attribute will be indestructible
- Spice works properly in tilesets where spice and buildings can be placed on same tiles (i.e. Red Alert)
  (you cannot place buildings on spice but can place them where it was harvested, spice blooms won't
  create spice underneath buildings)

First post edited and download link updated.

  • Upvote 1
Link to comment
Share on other sites

@Klofkac Howdies. I'm asking here if this exe update would solve my weird game launch probs. that hasn't got assist yet on it's own thread. I've read through your first post on this thread, but didn't gather it up from there. I mean the answer to this question. So can i use this "dune2000-sp-patches_2021-09-13.7z" with Gruntmods Edition 1.6.2.5 ? Good week o/ Kindly: Fedaygin

Link to comment
Share on other sites

1 hour ago, Fedaygin said:

@Klofkac Howdies. I'm asking here if this exe update would solve my weird game launch probs. that hasn't got assist yet on it's own thread. I've read through your first post on this thread, but didn't gather it up from there. I mean the answer to this question. So can i use this "dune2000-sp-patches_2021-09-13.7z" with Gruntmods Edition 1.6.2.5 ? Good week o/ Kindly: Fedaygin

Yes. Just copy all the files included in the package into your Dune 2000 folder, whatever version you have. I'm personally using it with Gruntmods.

Link to comment
Share on other sites

@Klofkac Thanks, that's good to know :) Hope that adding all the content from the mentioned package to Dune2k Gruntmods Edition's root folder fixes the things i mention here: Three errors blocking the good times. Take care, share good word about Movie & other Arrakis content o/ 

UPDATE: Got it to work earlier this evening & with fullscreen mode after it first launched in small res at top left corner. Toggled on that cutscene box at launcher so it went back to Fullscreen mode as did first time when installed few days ago. Prev. it stopped working all of sudden & gave that 'your gpu doesn't support ..' error pop up. Hope it doesn't happen this time after couple days. Waiting for zoom in & out feature to be added & rat buttons to be reversed so they match today's controls. I'll happily support also via small monthly donation once they arrive. Also important to mod cutscene vol settings so that audio won't rise into stratosphere when they're played. That tends to happen & it's no fun. Wish good week to all o/

Edited by Fedaygin
Clarified things.
Link to comment
Share on other sites

  • 3 weeks later...

Update from 2021-10-08:

New mapping possibilities:
- You can place any building (even specific version - i.e. Atreides, Harkonnen, Ordos) for any side with special values
  from range 8192 - 16383. The building type, side and other properties are coded in special value directly, no need to set them
  up in TILEDATA.BIN. D2kEditor provides GUI in the new Advanced structures mode.
  - You can place refinery which does not receive new harvester delivery upon starting a mission
  - You can place specific building as primary
  - For turrets, you can specify initial barrel direction (4 directions: up, right, down, left)
  - Tagged property: for use in events which refer to specific building(s)
- You can place any unit (even specific version, i.e. Atreides, Harkonnen, Ordos tank) for any side with special values
  from range 16384 - 32767. The unit type, side and other properties are coded in special value directly, no need to set them
  up in TILEDATA.BIN. D2kEditor provides GUI in the new Advanced structures mode.
  - You can specify initial unit direction (8 basic directions)
  - You can place any unit as stealth
  - Tagged property: for use in events which refer to specific unit(s)
- You can place static crates with special values from range 32768-65534. New GUI is available in D2kEditor Advanced structures mode.
- You can directly place thin spice, thick spice and real destructible concrete for any side out of the box as a direct tile property 
  without use of any special value or tiles with specific pre-set tile attributes. You can place any building or unit on top of them.

Bug fixes:
- Exploding barrel building does not deal damage when it is sold

Extensions and improvements:
- Added rule "buildingsAlwaysNeedPrerequisites": if turned on, a building will be available to build only when its 
  prerequisites are present, and become unavailable when its prerequisite is destroyed or sold (like how it works for units).
- Added rule "returnCreditsToSpiceStorage": if turned on, credits from cancelled builds and starport orders will be returned
  as spice into silo storage capacity (if not enough capacity, remaining credits will be given as cash and won't be lost).
  This makes the starport exploit unusable. Does not apply to selling buildings and bonus cash crates.
- Added new AI property "DontFaceUnitsAwayFromConYard": if turned on, units for a side with active AI won't be set to face
  away from construction yard at the start of mission.

First post edited and download link updated.

Edited by Klofkac
Link to comment
Share on other sites

  • 4 weeks later...

Update from 2021-11-03:

Events system:
General changes
- Added "or" mode into event's condition list (event will trigger if at least one condition is true)
- Extended limits to maximum of 1024 events and 256 conditions (needed to extend MIS file format)

New event types
- Activate Timer: If an "Interval", "Timer" or "Random interval" condition is set as Inactive, this event
                  will activate it. The condition starts counting its time from the time of activation rather
                  than from start of mission, so you can make a specific delay after some event happens.
                  If already active condition is activated again, it resets and starts counting again from
                  time of activation. So you can make repeatable chains of events.
- Add Unit, Add Building: Added parameters which are settable in Advanced stuctures mode
                          (initial direction, stealth, primary, tagged)

Original condition type changes
- Interval: Added "Inactive" property (can be activated/reset by "Activate Timer" event)
            Added rule "intervalsAreOffByOneTick" which is "Yes" by default to keep vanilla behavior.
            If set to "No", the times specified are exact times without need to substract one tick.
- Timer: Added "Inactive" property (can be activated/reset by "Activate Timer" event)
         Added "Shift" property to be used with "%" operation (triggers always "Shift" ticks earlier)
- Spice Harvested: Added possibility to specify a side to check for its credits (vanilla supports only My side)

New condition types
- Random Chance: Can evaluate as True or False based on randomness. 
    Has three parameters: "Range", "Min value" and "Max value". A random number within specified range 
    (from 1 to "Range") is generated and condition is true if the generated number falls between Min and Max value.
    The generated random number is shared by all "Random Chance" conditions at same time, so you can make
    "multiple choice" behavior with each option having its probability by using multiple conditions with adjacent ranges.
    The condition can work in two modes: "dynamic" and "fixed", determined by "fixed result" parameter.
    If it is set to 0, then each tick a different random number is generated so condition evaluates differently
    each tick. If it is set to a nonzero value, then the random number is generated once in the beginning of mission and
    condition gives always same result through whole gameplay. Different "fixed result" value uses independent fixed
    random number.
- Random interval: Works in similar way as "Interval" condition, but instead of exact delay between runs you specify
    "Min delay" and "Max delay". Different delay is picked randomly within the range for each run.
    After "Start delay" passes, condition does not trigger, but there's also additional random delay before the first run.
    Can be activated/reset by "Activate Timer" event.

Bug fixes:
- Exploding barrel will not cause damage if it is captured by engineer

New D2kEditor features
- Convert structures to advanced mode option
- Structures editor: Added unit upgrade type field
- Export and Import Events feature

First post edited and download link updated.

Edited by Klofkac
Link to comment
Share on other sites

> Extended limits to maximum of 1024 events and 256 conditions (needed to extend MIS file format)

It is refreshing to see someone achieve what I could not. :D It looks like you have also handled the support for the old capacity and format. Great work!

The theoretical limit to the number of different types of events and conditions should be 255 (0xFE) or 256 (0xFF), because that is storage of the type is one byte. The game has an internal check for the event and condition ID so as to produce an error if the read ID exceeds the old limit, but the patch can easily override that. The rest is a matter of developing the switch behavior.

Some additional suggestions based on my rusty knowledge, and what I had wanted to do before:

- In Event 12 / 0x0C - Switch My Side, there is the option of setting the enable AI. I suggest that we keep that option as it is, but also create an event to set only the AI for a house (similar to Event 06 / 0x06 - Set Build Rate and similar events). I guess it can be called Set AI, and the parameters can even be extended to include House and AI Enabled for a start, but also allow the future inclusion of EnablePractice, BuyUnits, UpgradeBuildings, RebuildBuildings, DontSell, GuardBase and GuardBuildings (more if you are willing to use the full set of 48 bytes in the event to its full potential). A possible favorite for mappers and scripts could be the SpecialWeaponDelay, but that may take up several bytes.

- In Event 08 / 0x08 - Set Cash, a good expansion to the event is a switch (we can use the byte reserved for Deploy Action in Reinforcement / Unit Spawn) to determine different behaviors, such as:

    > 00 - Convert Spice to Cash and Set Cash (the default behavior, spice is set to zero / silos are emptied and the cash amount is set)
    > 01 - Preserve Spice and Set Cash (preserve the spice amount, and set Cash to the value - Spice, unless there is not enough Cash, then deduct from Spice)
    > 02 - Convert Spice to Cash and Add Cash (spice is set to zero / silos are emptied, the previous spice amount is added to cash, and the value is added to Cash)
    > 03 - Convert Spice to Cash and Subtract Cash (spice is set to zero / silos are emptied, the previous spice amount is added to cash, and the value is subtracted from Cash down to 0)
    > 04 - Convert Spice to Cash and Add Spice (spice is set to zero / silos are emptied, the previous spice amount is added to cash, and the value is added to Spice. Spice may be lost in case of insufficient spice storage)
    > 05 - Preserve Spice and Add Cash (preserve the spice amount, and the value is added to Cash)
    > 06 - Preserve Spice and Subtract Cash (preserve the spice amount,, and the value is subtracted from Cash down to 0)
    > 07 - Preserve Spice and Add Spice (preserve the spice amount, and the value is added to Spice. Spice may be lost in case of insufficient spice storage)   
    > 08 - Preserve Spice and Subtract Spice (preserve the spice amount, and the value is subtracted from Spice down to 0)

- Add Event "Add Unit to Starport Shop" (or a similar name), with two parameters: Amount and ID, to add the specified quantity to a unit availability on the Starport order tab. The IDs on the original game shall be: 00=Trike, 01=Quad, 02=Harvester, 03=Combat Tank, 04=MCV, 05=Missile Tank, 06=Siege Tank, 07=Carryall, but can change if Templates.bin is modded. This gives some control over the Starport shop to the mission creator.

- In Conditions 00 - Building Exists and 01 - Unit Exists, I do not know how feasible it is, but we can see if conditions Building Count and Unit Count can be made. The search algorithm has to be retrieved from the XX Exists function and studied so it can be made to count instead. XX Exists will be a special case of XX Count where the required count is 1. This can be useful to enforce a defense of several bases (e.g. Protect all 5 Refineries) without consuming precious house allocations to implement via Building Exists.

- For the following conditions, possible use of a special House value -1 (0xFF) as "Any House" to indicate a full map search inclusive of all 8 house players (implementation could simply be to run the function 8 times, one for each house and stop on success):

    > 00 - Building Exists, 
    > 01 - Unit Exists, 
    > 08 - Spice Harvested (if the specific side is shown)

- Add Condition "Spice Storage", to compare the amount of Spice Storage similar to "Spice Harvested". This could be useful to enforce fail conditions where the player has lost the ability to acquire new silos to meet a certain "Spice Harvested" quota.

- Several more conditions can be made if the in-game statistics can be read. Possibilities include:
    > "Buildings Destroyed"
    > "Buildings Lost"
    > "Units Killed"
    > "Units Lost"
    > "XX Building Owned"
    > "XX Unit Owned"

- Outside of the events mechanism, I think it may be possible to allow larger reveal radii by extending CIRCLES.bin. But it also involves a patch into the EXE so that it reads more of CIRCLES.bin than the present 8 entries. As a refresher, CIRCLES.bin comprises of 8 sets of masks (00 - within circle, FF - outside circle), when read from the front, spells the values for 1x1, 3x3, 5x5, 7x7, 9x9, 11x11, 13x13, and 15x15 (radius 7). This could impact sight radius and map reveal events.

 

 

 

Edited by lovalmidas
Link to comment
Share on other sites

Hello @lovalmidas, nice to see you appearing here again after so long time. We thought you were gone for good. Actually, your short appearance and activities helped me a lot with doing many things, like loading of graphics resources in D2kEditor, implementing structures editor and more. A miracle has happened in the meantime - I got help from both FunkyFr3sh side and The Code Conqueors side regarding game patches code and decompilation of the game using IDA Pro, so I could start with heavy modding.

Not sure if you saw it, but in this git repo: https://github.com/jkoncick/dune2000-sp-patches I am open-sourcing my own code, which are the bug fixes and additions, but most importantly, the complete rework of events system. You can see the events system code under src/event-system/ folder, here's how I implemented the new events, if you are interested. I'm not publishing the whole repository I'm working with, especially FunkyFr3sh's code and definitions of internal game structures and data addresses, because FunkyFr3sh asked me to keep those things private as this might interfere with the multiplayer community. So this is a compromise approach I came up with.

15 hours ago, lovalmidas said:

> Extended limits to maximum of 1024 events and 256 conditions (needed to extend MIS file format)

It is refreshing to see someone achieve what I could not. :D It looks like you have also handled the support for the old capacity and format. Great work!

The theoretical limit to the number of different types of events and conditions should be 255 (0xFE) or 256 (0xFF), because that is storage of the type is one byte. The game has an internal check for the event and condition ID so as to produce an error if the read ID exceeds the old limit, but the patch can easily override that. The rest is a matter of developing the switch behavior.

Actually I wanted to do this earlier as well, and I already had the ideas how to implement this back then. Move the events and condition data into a new, bigger location in memory, extend MIS and game save file format to hold the extended data, and patch the MIS and game save read/write routines. It was quite easy to implement, as the event and condition system is pretily isolated logic from the rest of game code, so only minimum changes needed to be done to actual game code.

15 hours ago, lovalmidas said:

- In Event 12 / 0x0C - Switch My Side, there is the option of setting the enable AI. I suggest that we keep that option as it is, but also create an event to set only the AI for a house (similar to Event 06 / 0x06 - Set Build Rate and similar events). I guess it can be called Set AI, and the parameters can even be extended to include House and AI Enabled for a start, but also allow the future inclusion of EnablePractice, BuyUnits, UpgradeBuildings, RebuildBuildings, DontSell, GuardBase and GuardBuildings (more if you are willing to use the full set of 48 bytes in the event to its full potential). A possible favorite for mappers and scripts could be the SpecialWeaponDelay, but that may take up several bytes.

Yeah, I am planning to do some generic event like "Set AI Property", where you will select which property to change and the target value. So you can change every single AI byte to whatever value you like. Generally, I am planning to implement generic events to access the internal game logic data, so you will be able to read and change them and alter the game logic. This will be some advanced stuff which would require some skills and knowledge of game logic and data, so wondering if that will be even used by mappers and modders to the full potential.

15 hours ago, lovalmidas said:

- In Event 08 / 0x08 - Set Cash, a good expansion to the event is a switch (we can use the byte reserved for Deploy Action in Reinforcement / Unit Spawn) to determine different behaviors, such as:

    > 00 - Convert Spice to Cash and Set Cash (the default behavior, spice is set to zero / silos are emptied and the cash amount is set)
    > 01 - Preserve Spice and Set Cash (preserve the spice amount, and set Cash to the value - Spice, unless there is not enough Cash, then deduct from Spice)
    > 02 - Convert Spice to Cash and Add Cash (spice is set to zero / silos are emptied, the previous spice amount is added to cash, and the value is added to Cash)
    > 03 - Convert Spice to Cash and Subtract Cash (spice is set to zero / silos are emptied, the previous spice amount is added to cash, and the value is subtracted from Cash down to 0)
    > 04 - Convert Spice to Cash and Add Spice (spice is set to zero / silos are emptied, the previous spice amount is added to cash, and the value is added to Spice. Spice may be lost in case of insufficient spice storage)
    > 05 - Preserve Spice and Add Cash (preserve the spice amount, and the value is added to Cash)
    > 06 - Preserve Spice and Subtract Cash (preserve the spice amount,, and the value is subtracted from Cash down to 0)
    > 07 - Preserve Spice and Add Spice (preserve the spice amount, and the value is added to Spice. Spice may be lost in case of insufficient spice storage)   
    > 08 - Preserve Spice and Subtract Spice (preserve the spice amount, and the value is subtracted from Spice down to 0)

Well, this looks quite complicated to me and can become quite confusing to the mappers. I'll probably not add this for now, unless someone would request it.

15 hours ago, lovalmidas said:

- Add Event "Add Unit to Starport Shop" (or a similar name), with two parameters: Amount and ID, to add the specified quantity to a unit availability on the Starport order tab. The IDs on the original game shall be: 00=Trike, 01=Quad, 02=Harvester, 03=Combat Tank, 04=MCV, 05=Missile Tank, 06=Siege Tank, 07=Carryall, but can change if Templates.bin is modded. This gives some control over the Starport shop to the mission creator.

I was already thinking and planning about adding this kind of event. Furthermore, I wanted to add event to manipulate starport prices as well.

15 hours ago, lovalmidas said:

- In Conditions 00 - Building Exists and 01 - Unit Exists, I do not know how feasible it is, but we can see if conditions Building Count and Unit Count can be made. The search algorithm has to be retrieved from the XX Exists function and studied so it can be made to count instead. XX Exists will be a special case of XX Count where the required count is 1. This can be useful to enforce a defense of several bases (e.g. Protect all 5 Refineries) without consuming precious house allocations to implement via Building Exists.

I want to keep the conditions "Building exists" and "Unit exists" untouched for vanilla compatibility, and add new, much more generic and flexible conditions that would check for existence of buildings and units according to many possible criteria (unit's location, type, health, minimum or exact amount of such units etc). This is what I am just planning as the next feature to add, it's just a bit of challenge for me and I'm not making much progress at this moment.

16 hours ago, lovalmidas said:

- For the following conditions, possible use of a special House value -1 (0xFF) as "Any House" to indicate a full map search inclusive of all 8 house players (implementation could simply be to run the function 8 times, one for each house and stop on success):

    > 00 - Building Exists, 
    > 01 - Unit Exists, 
    > 08 - Spice Harvested (if the specific side is shown)

I was thinking about adding someting like "Any House" option as well, but not sure how that would work with Spice Harvested condition. I'll add this just to conditions to check existence of units and buildings.

16 hours ago, lovalmidas said:

- Add Condition "Spice Storage", to compare the amount of Spice Storage similar to "Spice Harvested". This could be useful to enforce fail conditions where the player has lost the ability to acquire new silos to meet a certain "Spice Harvested" quota.

- Several more conditions can be made if the in-game statistics can be read. Possibilities include:
    > "Buildings Destroyed"
    > "Buildings Lost"
    > "Units Killed"
    > "Units Lost"
    > "XX Building Owned"
    > "XX Unit Owned"

As I said about the events, I would like to add also some generic condition that would check any side property (you specify the property, and value to compare with).

16 hours ago, lovalmidas said:

- Outside of the events mechanism, I think it may be possible to allow larger reveal radii by extending CIRCLES.bin. But it also involves a patch into the EXE so that it reads more of CIRCLES.bin than the present 8 entries. As a refresher, CIRCLES.bin comprises of 8 sets of masks (00 - within circle, FF - outside circle), when read from the front, spells the values for 1x1, 3x3, 5x5, 7x7, 9x9, 11x11, 13x13, and 15x15 (radius 7). This could impact sight radius and map reveal events.

I'm not planning this, as I don't see this as a big prioirity, and it would be some work.

Link to comment
Share on other sites

On 11/5/2021 at 5:29 AM, Klofkac said:

request

The "cash to Spice" feature might be useful for filling Silos at the start of a map with starting cash, especially for a specific faction. I imagine a new rule in [Vars] would set that up for every faction, which might not be totally ideal.

So, ya know, if you do wind up looking at that event, that's a possible use for it. :D

Link to comment
Share on other sites

  • 5 months later...

Update from 2022-05-04:

3) Events system
3a) General changes
- Added "generic value operation" option to some of existing as well as new events of type "Set Something". 
  You can not only set the property to a static value, but also add or substract from existing value.
  There are many different operations such as multiply, modulo, cap min/max, bit operations
  as well as randomization operations.
- Added "generic data manipulation" events which are generalized events of type "Set Some Property".
  For example instead of "Set Build Rate" event you can use a generalized event "Set AI Property"
  where you can select any AI property you want to change from the list.
- Added "object manipulation" events with "object filters". You can do specific actions on
  Units, Buildings, Crates and Tiles, and you can easily select which objects should get affected using
  filters with many different criteria. For example you can select units with the position on map,
  unit type, health, and many different properties. You can combine more criteria with an/or operators.
- Added debug events which can show internal data in real time on screen. These are just for development
  and testing and are there to help understanding internal game logic and troubleshooting.
  For example "Show Unit Data", "Show Building Data" etc.
  
3b) Original event type changes
Starport Delivery: Added "Delay" parameter (T minus messages will play during that time)
Set Build Rate/Attack Building Rate/Tech/Cash: added generic value operation
Show Timer: Changed to "Set Timer", added generic value operation
Show Message: Added "Sound mode" parameter (default sound, no sound, custom sound selection)
Unit Spawn: Added "Facing" and "Tag" parameter for initial direction and tag

3c) New event types
Add Building Destruction: Simulates building destruction animation + spawns debris
                          (technically adds a building and destroys it immediately)
Side manipulation events (40-45): Transfer Credits, Set Building Upgrades, Set Starport Stock,
                                  Set Starport Cost, Change Starport Unit, Show Side Data
AI manipulation events (46-47): Set AI Property, Show AI Data
Memory manipulation events (48-49): Set Memory Data, Show Memory Data
Unit manipulation events (50-59): Destroy Unit, Damage/Heal Unit, Change Unit Owner, Change Unit Type,
                                  Set Unit Flag, Set Unit Property, Select Unit, Airlift Unit, Show Unit Data
Building manipulation events (60-69): Destroy Building, Damage/Heal Building, Change Building Owner,
                                      Change Building Type, Set Building Flag, Set Building Property,
                                      Select Building, Show Building Data
Crate manipulation events (70-73): Remove Crate, Pickup Crate, Set Crate Property, Show Crate Data
Tile manipulation events (74-79): Change Tile, Set Tile Attribute, Set Tile Damage, Reveal Tile,
                                  Hide Tile, Show Tile Data
Order events (80-109): You can make orders like a player would do with mouse and keyboard input,
                       like ordering units to move, attack etc., repair, sell buildings etc., as well as
                       clicking on sidebar to build buildings, units, upgrades, order from starport etc.
                       Before making some orders you need to select units/buildings you want give order to.
                       Use in combination with "Select Unit" or "Select Building" event. When order is given,
                       the selection can be restored, so it would not interfere with player's interface.

3d) Original condition type changes
Spice Harvested: Added possibility to check for total credits, cash, spice or spice storage

3e) New condition types
Diplomacy: Check for current diplomacy between any two sides
Difficulty: Check for current difficulty setting (easy, normal or hard)
Object/environment checking conditions: Check Units, Check Buildings, Check Crates, Check Tiles
                                        Very flexible conditions where you can use same criteria as with
                                        object manipulation events.
Spice in Area: Check how much spice blobs are left in specified rectangle area in total (thin = 2, thick = 4)
Damage in Area: Check for sum of total damage caused to tiles in specified rectangle area
Side-related conditions: Power, Building Upgrades, Starport Stock, Starport Cost, Starport Pick, Starport Delivery,
Sidebar build icon status conditions: Building Icon, Unit Icon, Upgrade Icon
Stats conditions: Spice Harvested, Units Built, Buildings Built, Units Lost, Buildings Lost
                  Units Killed, Buildings Killed
Generic data conditions: AI Property, Memory Value

4) Bug fixes
- Fixed: When some units are picked before placing order and starport is sold, the credits are returned twice
- Fixed: Returning wrong amount of credits from cancelled second and third building upgrade
- Fixed: Units keeping firing on allied sandworm even after it was killed and put on sleep
- Fixed: Sleeping sandworm should not take damage - prevents turning neutral to hostile
- Fixed: Tile attribures not properly set after removing buildings not requiring concrete
- Fixed: AI units getting stuck on targeting a cloaked unit (when doing harvester protection)
- Fixed: When tech is lowered by event, running building upgrades which are no longer possible should get cancelled
- Fixed: Improper cursor over enemy building when only armed engineer/saboteur is selected
- Fixed: Improper cursor (engineer/saboteur/sell) when building has infiltrated flag
- Fixed: Missing check for unit type availability when ordered to build such unit type

5) Extensions and improvements
- Guard mode radius can be customized by map rule "guardModeRadius"
- Always show radar map if rule "alwaysShowRadar" is set to true
- Made all tiles count tile damage (previously it was done only for sand and rock tiles)
- Crates can be picked up by a carryall dropping a unit on them
- Allow infantry to move on tile where some infantry is already standing (with Alt key)
- Made top row of map buildable
- Added new rules for customized cost and build speed percentage for Easy and Hard difficulty:
  "costPercentageEasy", "costPercentageHard", "buildSpeedPercentageEasy", "buildSpeedPercentageHard"
- Increased sound size limit to 512 kilobytes

6) New D2kEditor features
- Show advanced mode buildings/units special property markers (tagged, primary, no harv)
- Mark events using negated condition with different color
- Added marking of events and conditions of selected type

First post edited and download link updated.

Link to comment
Share on other sites

  • Klofkac changed the title to Dune 2000 Singleplayer game patching (new features and bug fixes) + D2kEditor 2.1 release

I started using the new version. It's a bit confusing since has changed lots of things, but I already saw some events that I am sure I will use for my next work.

Thanks for the editor and all these new features.

Link to comment
Share on other sites

Posted (edited)

I found out an issue I want to bring, and I would like to do if possible two recomendation.

The recomendations:
Is to be able to add "empty" lines on the "events and conditions". This is simple as a personal thing since when I have X amount of events done, I usally move the slider to the bottom so I can only see a few of the last events.

It is like when you are doing a .txt, I like to press "enter" to keep many empty lines so I can see the last line written on center of the screen.

Is just a personal thing of liking to have the things that I am checking in the center and not on the bottom, so a way to enter empty lines or something like that.

A second recomendation:
It seems that there are certain weapons that although it can be set as "Homing" the game doesn't know what to do with them. Certain weapons set as "Homing" will make the bullet to fire up even when firing right.

I was thinking if there is a way to add some kind of extra line or warning because of this. Fey sais that he used even with the non-working homing to do other stuff, so I don't suggest to remove the "homing" tag from those weapons, but maybe a line at the bottom or a pop-up warning.

Because I spend like 40 minutes setting the weapon with all the values and stuff, and then I only when I gave up and assumed "It cannot be done" after 40 minutes I got told "by the way, not all the weapons works set in homing, only these 2-3 works". And I feel like this is an important thing to include so people don't waste time on things that don't work.


 

-Now, the issue:
witht he editor I opened my single mission "EBFD - Final Assault"

This is a modded single mission that I did during the TibEd era. This has several modifications that are loaded correctly by the editor, but there are 4 new warheads that I added that are not reconized.

When I check with TibEd I can see clearly that I have these ones.

Imagen

The "Contaminator" warhead has a 150 %damage on infantry and only a 2% against everything else.

The grenadier, which it is the one carrying the contaminator values, is holding a "Hydra" bullet that deals 999 damage, so pretty much instakill all the enemy infantry but does almost no damage on everything else. 

However, while on your editor, those 4 new warheads are not loaded, and now my "Hydra" uses the W_Bullet instead.  I still loads that my grenadier is using the hydra weapon with 999 damage, but the wrong warhead (W_Bullet) 

I can launch my own mission and using debug I control the enemy grenadier and does little to no damage to quads and turrets, which it means that works. But if I dare to click on "save to files" I will lost my set up.

My guess is that because I am not using the "W_something" naming is not being read.

No need to rushing on fixing this since I have no intentions on doing anything with it or editing this specific missions, just telling in case is the naming the issue or something else to avoid happening in the future.

Edited by Cm_blast
Link to comment
Share on other sites

  • 2 weeks later...

regarding homing weapons, I'll mention that I've been using the glitched behavior to make suicide units - some homing attacks will straight up strike the very unit that fires the weapon. some other weapons, like Devastator shots, can be set to homing and work! but yeah, can't use just any old weapon for homing attacks

just throwing that out there, in case you plan to fix it :P perhaps a [vars] could be attached so homing can work on any weapon, but the glitched behavior isn't removed completely, idk lol

Link to comment
Share on other sites

Posted (edited)

I have a small suggestion:

Structure editor shortcut is control X, so I was thinking that or either making it a different shortcut or, at least, disable it when you are on the mission briefing, as right now I cannot cut+paste the text when I am writting stuff.

I keep doing the control+X to cut a part of the briefing to move it to the top/bottom or whatever and the other windown pop up instead.

Oh, also something that I don't remember if I wrote about it.
Thinking on a "restore" buttom on the structure editor.

TibEd had it, and if testing stuff there is a moment I just have to revert all the canges, I need to open the editor a second time, check the unit, export the values and then come into the first and import the values.

So a restore that pick up the "back up files" (as I think the editor does a back up the first time?) it would be neat, to restore individual units, or building or art...

Edited by Cm_blast
Link to comment
Share on other sites

  • 2 weeks later...
On 5/9/2022 at 4:29 PM, Cm_blast said:

The recomendations:
Is to be able to add "empty" lines on the "events and conditions". This is simple as a personal thing since when I have X amount of events done, I usally move the slider to the bottom so I can only see a few of the last events.

It is like when you are doing a .txt, I like to press "enter" to keep many empty lines so I can see the last line written on center of the screen.

Is just a personal thing of liking to have the things that I am checking in the center and not on the bottom, so a way to enter empty lines or something like that.

I added this. In D2kEditor.ini there is new setting "EventGridShowEmptyLines", change it to 1 and there will be additional empty lines in list of events and conditions.

On 5/9/2022 at 4:29 PM, Cm_blast said:

A second recomendation:
It seems that there are certain weapons that although it can be set as "Homing" the game doesn't know what to do with them. Certain weapons set as "Homing" will make the bullet to fire up even when firing right.

I will need to find out what's behind those non-working homing weapons.

On 5/9/2022 at 4:29 PM, Cm_blast said:

This is a modded single mission that I did during the TibEd era. This has several modifications that are loaded correctly by the editor, but there are 4 new warheads that I added that are not reconized.

This is because TibEd does not increase the number of used warheads which is located inside ARMOUR.BIN file. D2kEditor reads and uses this value, but as TibEd does not change it, D2kEditor still thinks there is vanilla number of warheads.

But this can be worked around. Open up your old TibEd-modded files in D2kEditor, go directly to Armour tab, and add 4 new warheads. The numbers will be preserved, althrough the warhead names will get erased and you will need to write them again. Then once you save in D2kEditor, this will no longer be an issue.

On 5/22/2022 at 4:44 PM, Cm_blast said:

Structure editor shortcut is control X, so I was thinking that or either making it a different shortcut or, at least, disable it when you are on the mission briefing, as right now I cannot cut+paste the text when I am writting stuff.

I keep doing the control+X to cut a part of the briefing to move it to the top/bottom or whatever and the other windown pop up instead.

I made it so Ctrl+X shortcut is disabled when inside Briefing field, so you can use it to cut your text properly.

On 5/22/2022 at 4:44 PM, Cm_blast said:

Thinking on a "restore" buttom on the structure editor.

TibEd had it, and if testing stuff there is a moment I just have to revert all the canges, I need to open the editor a second time, check the unit, export the values and then come into the first and import the values.

So a restore that pick up the "back up files" (as I think the editor does a back up the first time?) it would be neat, to restore individual units, or building or art...

I think this will not be needed. You just need to realize that D2kEditor works differently with modded files than what you might be used to from TibEd.

So instead of backing up and restoring original game files like in TibEd, you should use campaign and mod folders. And never edit the original game files directly. So when you want to do some mod or just play around, set up some campaign and mod folder in mission settings. You do not need to create them manually, as editor can create them if not existing. Then go to structures editor and do some changes. Save, and D2kEditor will actually save the files into campaign and mod folder, instead of overwriting original game files. Then if you want to discard your changes and start over again with clean game files, change the mod folder name, and repeat. You can delete mod folders you do not want anymore.

Link to comment
Share on other sites

Posted (edited)
1 hour ago, Klofkac said:

I added this. In D2kEditor.ini there is new setting "EventGridShowEmptyLines", change it to 1 and there will be additional empty lines in list of events and conditions.

I made it so Ctrl+X shortcut is disabled when inside Briefing field, so you can use it to cut your text properly.

Apreciate all of this.

1 hour ago, Klofkac said:

So instead of backing up and restoring original game files like in TibEd, you should use campaign and mod folders. And never edit the original game files directly. So when you want to do some mod or just play around, set up some campaign and mod folder in mission settings. You do not need to create them manually, as editor can create them if not existing. Then go to structures editor and do some changes. Save, and D2kEditor will actually save the files into campaign and mod folder, instead of overwriting original game files. Then if you want to discard your changes and start over again with clean game files, change the mod folder name, and repeat. You can delete mod folders you do not want anymore.

I am already using a CCD submod for the new campaign I am working on.

And that's exactly what I was refering to that. Sometimes, the thing doesn't work as intented (As my sniper fremen-like unit and the homing weapon didn't work), so at the end of the day, since my mod already have several units and buildings with mods on them (with allignemnt and all that kind of stuff that takes a while to do), the only way to recuperate the vanilla values because on 1 specific modification but not the rest, I need to remove the CCD from being loaded on the editor, exporting the fremen values, then reloading the CCD mod and importing on top of the fremen.

But if it can't be done it can be done.

Oh, Maybe I can suggest some kind of "favourite events list". With 21 of the original events (and some of them not even supported), it was easy to get track of the favourites, you know, reveal map, unit spawn, show messages... the usual (for me).

Now there are 108 total, and there are a few that I am already using pretty much every new mission I am creating, like "Activate timer". It takes a while to search the position of this (and the other 3-4) since this is all new and, besides the OG, I don't have localize all of them yet.

So maybe, on the "right click" portion, an specific "favourite/most used events" or something like that, where appear the list of whatever events I want to be there, so I can get that Activate timer is on 36 all the time, but I can have center view point which I don't remember without looking it now, but having the indicator (just as indicator, it doesn't have to do anything) that show the favourites/selected in a list:
36 - activate timer
XX - center view point
YY - change build owner

I have been using at least 2 of the 3 of these events in 5 of my last 6 missions, so having it just as a personal note (withouth having to do an external TXT file) for me to check and go straigh into which number is each ones. Sometimes I open a previous mission and look at the event directly because it takes less time that searching on the +100 list.

So having it as a quick reminder, although if you want to do an actual function that ont he list if I click on 1 it is added directly, even better.

Not a priority to add.

Edited by Cm_blast
Link to comment
Share on other sites

Update from 2022-06-06:

- Added rule "uncloakRemainingStealthUnit" to toggle this functionality
- Fixed: Do not target invulnerable carryalls which bring a delivery
- New messages system: 
  Messages can have a reference ID, used to replace a message with another one with same ID or remove message.
  Messages with nonzero reference ID and zero duration will last forever (for zero ref. ID is 400 ticks).
  Messages can be positioned anywhere on screen, with defined horizontal and vertical alignment.
  Maximum number of messages shown in chat can be changed by "maxChatMessages" rule.
  Added Type-on mode: message is typed on screen letter by letter.
  Added colored messages: message text can be shown in one of 16 predefined colors.
  Multiple colors can be used within one message by changing color with special character (^) 
  followed by number 0-9 or letter A-F to select one of 16 possible colors.
  A predefined color can be changed dynamically by "Set Message Color" event, which affects all messages
  using that color. There's support for fancy effects like gradient colors or color changing in time.
  Maximum total number of messages that can be shown at same time is 32.
- Added unit and building terrain restrictions. That makes possible to allow placing buildings / moving units
  only on specific type of tiles (defined by terrain type attributes), like for example water.
- Added Max Distance setting on buildings to define how far it can be built from existing side's structures.
- Increased .AUD file size limit to 512 kilobytes
- Added force option to Play Sound event and Show Message custom sound, prevent non-forced sounds from being lost
- Fixed: Sounds with cooldown not playing after restarting or loading game

New D2kEditor features (v2.11):
Added: Deactivate Ctrl+X shortcut when on Briefing text box
Added: Show empty lines in event/condition lists. Controlled by "EventGridShowEmptyLines" setting in D2kEditor.ini.
Added: Unit and building terrain restriction fields in structures editor (new features in Dune 2000 mod)
Added: New event types and rules (new features in Dune 2000 mod)

First post edited and download link updated.

Link to comment
Share on other sites

  • Klofkac changed the title to Dune 2000 Singleplayer game patching (new features and bug fixes) + D2kEditor 2.11 release
22 hours ago, Striking Drekavac said:

can we get now bigger maps than 128x128 ? tried that myself but maps goes corrupted and crashes on start

Unfortunately no. This is a hard limit that's not feasible to patch.

Link to comment
Share on other sites

A tiny bugfix release from 2022-06-30:

Fixed: Buildings not providing build radius at all
Fixed: Broken powerbar and building/unit icons after switching side
Fixed: Wrong mouse cursor for engineer and saboteur on non-targetable buildings

First post edited and download link updated.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...