• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

[Systems] Chrono Technology

Status
Not open for further replies.
Hey all, howdy? (mind late night)

Anyway, I'm working on two stuffs based on Red Alert 2 Chrono Legionnaire unit and I intend to ask for some feedback before I sent it to the spell section (let's just say I'm being kind to the mods and reviewers).

Don't yell at me for using PauseUnit, I'll use that as template for Stun System later on. Just to ensure the core actually works.

Description :
Simulating Chrono Legionnaire attack from Red Alert 2. Prevent all units from attacking the target and "freeze" the target completely in time.
Other unit of the same weapon can still attack the target. Damage is not applied unit the unit hits zero health, in that case "disappears".

Requirements :
Damage Engine by Bribe
Unit Indexer by Bribe

Notes :
Due to nature of the system, cancelling an attack order might need to be executed several times if the last attack projectiles are yet to reach target due to auto attack enforcement.

  • CG Config
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- Copy the Chrono Gun System ability and set this value to it --------
      • Set CG_FreezeAbility = Chrono Gun System
      • -------- Add this ability to all units that utilize this system via World Editor --------
  • CG Initialize
    • Events
      • Game - DamageEvent becomes Equal to 1.00
    • Conditions
      • (Level of CG_FreezeAbility for DamageEventSource) Equal to 1
    • Actions
      • Set CG_SourceCV = (Custom value of DamageEventSource)
      • Set CG_TargetCV = (Custom value of DamageEventTarget)
      • -------- Apply actual damage, freeze target --------
      • Set CG_Damage[CG_TargetCV] = (CG_Damage[CG_TargetCV] + DamageEventAmount)
      • Unit - Pause DamageEventTarget
      • Set CG_UnderChrono[CG_TargetCV] = True
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Life of DamageEventTarget) Less than CG_Damage[CG_TargetCV]
        • Then - Actions
          • -------- Apply shot --------
          • Set DamageEventAmount = CG_Damage[CG_TargetCV]
        • Else - Actions
          • -------- Cancel main damage --------
          • Set DamageEventAmount = 0.00
      • -------- Keylock --------
      • Set CG_UserAttachVictimID[CG_SourceCV] = CG_TargetCV
      • Set CG_UserAttachVictim[CG_SourceCV] = DamageEventTarget
      • Unit - Order DamageEventSource to Attack DamageEventTarget
  • CG Exclusion
    • Events
      • Game - DamageEvent becomes Equal to 1.00
    • Conditions
      • CG_UnderChrono[(Custom value of DamageEventTarget)] Equal to True
      • (Level of CG_FreezeAbility for DamageEventSource) Equal to 0
    • Actions
      • Set DamageEventAmount = 0.00
  • CG Release
    • Events
      • Unit - A unit Is issued an order targeting an object
      • Unit - A unit Is issued an order targeting a point
      • Unit - A unit Is issued an order with no target
      • Unit - A unit Dies
    • Conditions
      • (Level of CG_FreezeAbility for (Triggering unit)) Equal to 1
    • Actions
      • Set CG_User = (Triggering unit)
      • Set CG_SourceCV = (Custom value of CG_User)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • CG_UserAttachVictimID[CG_SourceCV] Not equal to 0
        • Then - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (CG_User is alive) Equal to True
            • Then - Actions
              • -------- Issued order --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Issued order) Equal to (Order(attack))
                • Then - Actions
                  • -------- To ensure not a reinstated attack order --------
                  • Set CG_Victim = (Target unit of issued order)
                  • Set CG_TargetCV = (Custom value of CG_Victim)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • CG_UserAttachVictimID[CG_SourceCV] Equal to CG_TargetCV
                    • Then - Actions
                      • Skip remaining actions
                    • Else - Actions
                • Else - Actions
            • Else - Actions
              • -------- Died --------
          • Set CG_Victim = CG_UserAttachVictim[CG_SourceCV]
          • Set CG_TargetCV = (Custom value of CG_Victim)
          • Set CG_UnderChrono[CG_TargetCV] = False
          • Set CG_Damage[CG_TargetCV] = 0.00
          • Unit - Unpause CG_Victim
        • Else - Actions
Credits :
Red Alert 2
Bribe

WIP
 

Attachments

  • ChronoGun.w3x
    39.4 KB · Views: 134
Level 3
Joined
May 12, 2016
Messages
51
For Chrono movement:

-make a passive ability to be detected by the Chrono Trigger (lol)
-set pseudo-timer arrays and make a function that makes them tick
-make a insta-move action function triggered with a unit issued a point-target order event, considering that the ordered unit has the ability mentioned above and the pseudo-timer is expired
-function also sets pseudo-timer to 1 second (the cooldown for the Chrono movement iirc)

This is what I forsee you'll be doing with that wip. :xxd:
 
Status
Not open for further replies.
Top