• 🏆 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!

[Spell] Ghost Spell Without Invisibility

Status
Not open for further replies.
Level 12
Joined
Mar 13, 2012
Messages
1,121
Seeing as the only effect of Ghost is invisibility, you want an ability that does nothing?
A look at the ability shows that there are more effects.

Hi, is there any spell like Ghost, but without the invisibility part?

"Ghost (Visible)" (Aeth) might fit your needs.
 

Dr Super Good

Spell Reviewer
Level 64
Joined
Jan 18, 2005
Messages
27,202
I think the invisibility fade is what he does not like. I am not even sure if he wants the unit to be invisible (why would a mount be invisible?). I am guessing he is using the ability for its wind walk like capability of ignoring other unit collision but still pathing on the ground (does it do that?).

An alternative in that case would be wind walk with the fade point set to some stupidly large value so the unit never does fade transparent (this is how SWAT Aftermath does the run ability).
 
I did some tests yesterday with ghost (visible) and I think it's exactly what the OP wants, other units will be able to "walk through" the unit that has this ability. The unit is neither transparent nor actually invisible (so no detector ability needed either).

Ghost (visible), however, only deactivates the pathing checks for other units walking through the unit, so the ghost-unit will still check pathing for its own movement - so you might need to apply it to both rider and mount.
 
New%20Bitmap%20Image.jpg


Ghost (Visible) is the perfect solution, thank you guys very much :)

As you can see in the images, the character is moved a bit to the right (or left, depending on the perspective) from the center of the mount. Any ideas how to fix this?


Adding the Ghost (Visible) to the mount doesn't work either.
 
I am uploading the map for anyone who could try and fix it.

Another problem occured. The game doesn't recognize Item usage. My idea is to disable player's spells, and give them items which would resemble mount's abilities. However, because of the 'Mounted Orders' trigger, the game stopped noticing when an item is used...

Please, I really need help here.
 

Attachments

  • Chase.w3x
    470.9 KB · Views: 56

  • Mount
    • Events
      • Unit - A unit Is issued an order targeting an object
    • Conditions
      • (Point-value of (Triggering unit)) Equal to 0
      • (Point-value of (Target unit of issued order)) Greater than or equal to 10
      • (Point-value of (Target unit of issued order)) Less than or equal to 20
      • Mounted[(Player number of (Triggering player))] Equal to False
    • Actions
      • Set Blank_Point[0] = (Position of (Triggering unit))
      • Set Blank_Point[1] = (Position of (Target unit of issued order))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Distance between Blank_Point[0] and Blank_Point[1]) Less than 200.00
        • Then - Actions
          • Unit - Add Inventory (Hero) to (Triggering unit)
          • Hero - Create Unmount and give it to (Triggering unit)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Unit-type of (Triggering unit)) Equal to Chaser
            • Then - Actions
              • Unit - Remove Jump from (Triggering unit)
              • Unit - Remove Sprint from (Triggering unit)
              • Unit - Remove Teleport from (Triggering unit)
              • Unit - Add Disabled Jump to (Triggering unit)
              • Unit - Add Disabled Sprint to (Triggering unit)
              • Unit - Add Disabled Teleport to (Triggering unit)
            • Else - Actions
              • Unit - Remove Burst from (Triggering unit)
              • Unit - Remove Hide from (Triggering unit)
              • Unit - Remove Jump from (Triggering unit)
              • Unit - Remove Mole from (Triggering unit)
              • Unit - Remove Phase from (Triggering unit)
              • Unit - Remove Sprint from (Triggering unit)
              • Unit - Add Disabled Burst to (Triggering unit)
              • Unit - Add Disabled Hide to (Triggering unit)
              • Unit - Add Disabled Jump to (Triggering unit)
              • Unit - Add Disabled Mole to (Triggering unit)
              • Unit - Add Disabled Phase to (Triggering unit)
              • Unit - Add Disabled Sprint to (Triggering unit)
          • Set Mounted[(Player number of (Owner of (Ordered unit)))] = True
          • Set Mount_Creature[(Player number of (Owner of (Ordered unit)))] = (Target unit of issued order)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Unit-type of Mount_Creature[(Player number of (Triggering player))]) Equal to Kodo
            • Then - Actions
              • Set Mount_Height[(Player number of (Owner of (Ordered unit)))] = 100.00
              • Set Mount_Offset[(Player number of (Triggering player))] = -20.00
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Unit-type of Mount_Creature[(Player number of (Triggering player))]) Equal to Wolf
            • Then - Actions
              • Set Mount_Height[(Player number of (Owner of (Ordered unit)))] = 80.00
              • Set Mount_Offset[(Player number of (Triggering player))] = 0.00
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Unit-type of Mount_Creature[(Player number of (Triggering player))]) Equal to Raven
            • Then - Actions
              • Set Mount_Height[(Player number of (Owner of (Ordered unit)))] = 60.00
              • Set Mount_Offset[(Player number of (Triggering player))] = 15.00
            • Else - Actions
          • Unit - Turn collision for (Triggering unit) Off
          • Unit - Add Ghost (Visible) to (Triggering unit)
          • Unit - Add Ghost (Visible) to (Target unit of issued order)
        • Else - Actions
      • Custom script: call RemoveLocation(udg_Blank_Point[0])
      • Custom script: call RemoveLocation(udg_Blank_Point[1])

  • Mount Loop
    • Events
      • Time - Every 0.02 seconds of game time
    • Conditions
    • Actions
      • For each (Integer A) from 1 to 12, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Mounted[(Integer A)] Equal to True
            • Then - Actions
              • Set Blank_Point[1] = (Position of Mount_Creature[(Integer A)])
              • Set Blank_Point[0] = (Blank_Point[1] offset by Mount_Offset[(Integer A)] towards (Facing of Mount_Creature[(Integer A)]) degrees)
              • Animation - Change Player[(Integer A)] flying height to ((Current flying height of Mount_Creature[(Integer A)]) + Mount_Height[(Integer A)]) at 0.00
              • Unit - Make Player[(Integer A)] face (Facing of Mount_Creature[(Integer A)]) over 0.00 seconds
              • Custom script: call SetUnitX(udg_Player[bj_forLoopAIndex], (GetLocationX(udg_Blank_Point[0])))
              • Custom script: call SetUnitY(udg_Player[bj_forLoopAIndex], (GetLocationY(udg_Blank_Point[0])))
              • Custom script: call RemoveLocation(udg_Blank_Point[0])
            • Else - Actions

  • MountedOrders
    • 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
    • Conditions
      • (Point-value of (Ordered unit)) Equal to 0
      • Mounted[(Player number of (Owner of (Ordered unit)))] Equal to True
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Issued order) Not equal to (Order(banish))
          • (Issued order) Not equal to (Order(ancestralspirit))
          • (Issued order) Not equal to (Order(<Empty String>))
        • Then - Actions
          • Game - Display to (All players) the text: (String((Issued order)))
          • Game - Display to (All players) the text: 1
          • Custom script: call IssueImmediateOrderBJ( GetOrderedUnit(), "banish" )
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Or - Any (Conditions) are true
            • Conditions
              • (Issued order) Equal to (Order(stop))
              • (Issued order) Equal to (Order(holdground))
        • Then - Actions
          • Unit - Order Mount_Creature[(Player number of (Owner of (Ordered unit)))] to Stop
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • Or - Any (Conditions) are true
            • Conditions
              • (Issued order) Equal to (Order(move))
              • (Issued order) Equal to (Order(smart))
        • Then - Actions
          • Set Blank_Point[0] = (Target point of issued order)
          • Unit - Order Mount_Creature[(Player number of (Owner of (Ordered unit)))] to Move To Blank_Point[0]
          • Custom script: call RemoveLocation(udg_Blank_Point[0])
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Issued order) Equal to (Order(patrol))
        • Then - Actions
          • Set Blank_Point[0] = (Target point of issued order)
          • Unit - Order Mount_Creature[(Player number of (Owner of (Ordered unit)))] to Patrol To Blank_Point[0]
          • Custom script: call RemoveLocation(udg_Blank_Point[0])
        • Else - Actions

  • Unmount
    • Events
      • Unit - A unit Uses an item
    • Conditions
      • (Item-type of (Item being manipulated)) Equal to Unmount
    • Actions
      • Game - Display to (All players) the text: 1
      • Set Mounted[(Player number of (Owner of (Ordered unit)))] = False
      • Set Mount_Creature[(Player number of (Owner of (Ordered unit)))] = No unit
      • For each (Integer A) from 1 to 6, do (Actions)
        • Loop - Actions
          • Item - Remove (Item carried by (Triggering unit) in slot (Integer A))
      • Unit - Turn collision for (Triggering unit) On
      • Unit - Remove Inventory (Hero) from (Triggering unit)
      • Unit - Remove Ghost (Visible) from (Triggering unit)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Unit-type of (Triggering unit)) Equal to Chaser
        • Then - Actions
          • Unit - Remove Disabled Jump from (Triggering unit)
          • Unit - Remove Disabled Sprint from (Triggering unit)
          • Unit - Remove Disabled Teleport from (Triggering unit)
          • Unit - Add Jump to (Triggering unit)
          • Unit - Add Sprint to (Triggering unit)
          • Unit - Add Teleport to (Triggering unit)
        • Else - Actions
          • Unit - Remove Disabled Burst from (Triggering unit)
          • Unit - Remove Disabled Hide from (Triggering unit)
          • Unit - Remove Disabled Jump from (Triggering unit)
          • Unit - Remove Disabled Mole from (Triggering unit)
          • Unit - Remove Disabled Phase from (Triggering unit)
          • Unit - Remove Disabled Sprint from (Triggering unit)
          • Unit - Add Burst to (Triggering unit)
          • Unit - Add Hide to (Triggering unit)
          • Unit - Add Jump to (Triggering unit)
          • Unit - Add Mole to (Triggering unit)
          • Unit - Add Phase to (Triggering unit)
          • Unit - Add Sprint to (Triggering unit)
      • Set Jump_AirbourneUsed[(Player number of (Triggering player))] = False
      • Set Jump_OnOff[(Player number of (Triggering player))] = True
      • Animation - Change (Triggering unit) flying height to 1.00 at 0.00
      • Animation - Add the Alternate animation tag to (Triggering unit)
      • Animation - Play (Triggering unit)'s Spell animation
      • Set Jump_Acceleration[(Player number of (Triggering player))] = 20.00
      • Set Move_Real[(Player number of (Triggering player))] = -16.00
      • Set Move_Angle[(Player number of (Triggering player))] = (Facing of (Triggering unit))
      • Set Move_Deceleration[(Player number of (Triggering player))] = False
      • Unit - Set (Triggering unit) movement speed to 0.00
Can you understand why I said that downloading the map will be easier?
 
I have looked, could it be because of animation?

Re-trying again since nobody has been able to help you.

I fixed one problem, the line of code you were using was a duplication of the GUI version of movement therefore it basically spammed orders or locks your unit.

Attempting to fix mount centering now.

It's your mount animation spell that is bugging that up. I'll post a fixed version for you... however just a warning I kinda did dissect your map a bit. Not too much though... =P

There is one issue I notice still and that is the jumpy thing that happens when you move. However that is a different problem all together. =)
 

Attachments

  • 2Chase.w3x
    469.7 KB · Views: 41
Last edited:
I have looked, could it be because of animation?

Re-trying again since nobody has been able to help you.

I fixed one problem, the line of code you were using was a duplication of the GUI version of movement therefore it basically spammed orders or locks your unit.

Attempting to fix mount centering now.

It's your mount animation spell that is bugging that up. I'll post a fixed version for you... however just a warning I kinda did dissect your map a bit. Not too much though... =P

There is one issue I notice still and that is the jumpy thing that happens when you move. However that is a different problem all together. =)

Thanks mate :) I added some final touch-ups and works like a charm now :D
 
Status
Not open for further replies.
Top