Insanity Manager System

Squeekems

TH.net Regular
Reaction score
11
I am trying to make an insanity manager system for a boss fight in my map.
I want it so that if the user's hero is facing the boss, their lumber (insanity) will rise. If they are looking away, however, I want it to decrease.

I tried matching the facing angle to the angle between two points, but they do not match up all the time. I'm having trouble figuring out how I could manipulate the values, to test if the hero is facing the boss, correctly. Any suggestions?

Here is some code to exemplify what I have figured out so far.

There are 8 players, so the for-loop loops through the 8 players.
Hero is a Unit variable.
Boss 0009 <gen> is the boss unit.
TempPoint and TempPoint2 are Point variables.
TempReal is a Real variable.

Trigger:
  • Manage Insanity
    • Events
      • Time - Every 1.00 seconds of game time
    • Conditions
    • Actions
      • For each (Integer A) from 1 to 8, do (Actions)
        • Loop - Actions
          • Set TempPoint = (Position of Boss 0009 &lt;gen&gt;)
          • Set TempPoint2 = (Position of Hero[(Integer A)])
          • Set TempReal = (Angle from TempPoint to TempPoint2)
          • Custom script: call RemoveLocation(udg_TempPoint)
          • Custom script: call RemoveLocation(udg_TempPoint2)
          • Game - Display to (Player group((Player((Integer A))))) the text: ((String((Facing of Hero[(Integer A)]))) + ( and + (String(TempReal))))
 

Squeekems

TH.net Regular
Reaction score
11
I played around with your map. It only works when the X of the Boss is greater than the X of the hero.
At one point, my trigger did the same thing, but after messing around with it, I got further away from the solution. So the problem remains: to figure out if the hero is facing the boss while the X of the hero is greater than the X of the boss.

EDIT:
I did some more messing around.
Real Angle become negative while the X of the position of the hero(hX) is greater than the X of the position of the boss(bX).
I'm going to try testing for if hX > bH. While it is, I will multiply RealAngle by -1.

EDIT(2):
That did not help at all. <( >_<)>

Here is what I am working with currently:

View attachment Insanity.w3x

I added a message that displays the FacingAngle and RealAngle so you can see how the variables change.
 

GFreak45

I didnt slap you, i high 5'd your face.
Reaction score
130
re-making ulduar? :D

dont have time to help now but this weekend i will try to get around to it if it isnt solved by then :/
 

Ayanami

칼리
Reaction score
288
Fixed it. Problem was that whenever Facing Angle goes within 180 - 360 degrees range, it is displayed as -180 to 0 instead. Thus, solution is simple. Whenever Facing Angle is negative, add 360 to it. For example, let's say Facing Angle is 300. The actual result would be -60. Thus, by adding 360 to it, it gives you 300, which is the correct positive result.

Trigger:
  • Test
    • Events
      • Time - Every 1.00 seconds of game time
    • Conditions
    • Actions
      • Set HeroGroup = (Units in (Playable map area) matching (((Matching unit) is A Hero) Equal to True))
      • Unit Group - Pick every unit in HeroGroup and do (Actions)
        • Loop - Actions
          • Set HeroPosit = (Position of (Picked unit))
          • Set BossPosit = (Position of Peasant 0001 &lt;gen&gt;)
          • Set FacingAngle = (Facing of (Picked unit))
          • Set RealAngle = (Angle from HeroPosit to BossPosit)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • RealAngle Less than 0.00
            • Then - Actions
              • Set RealAngle = (RealAngle + 360.00)
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • FacingAngle Less than or equal to (RealAngle + 35.00)
              • FacingAngle Greater than or equal to (RealAngle - 35.00)
            • Then - Actions
              • Player - Set (Owner of (Picked unit)) Current lumber to (((Owner of (Picked unit)) Current lumber) + 1)
            • Else - Actions
              • Player - Set (Owner of (Picked unit)) Current lumber to (((Owner of (Picked unit)) Current lumber) - 1)
      • Game - Display to (All players) the text: ===================...
      • Game - Display to (All players) the text: (Facing Angle: + (String(FacingAngle)))
      • Game - Display to (All players) the text: (Real Angle: + (String(RealAngle)))
      • Game - Display to (All players) the text: ===================...
      • Custom script: call DestroyGroup (udg_HeroGroup)
      • Custom script: call RemoveLocation (udg_HeroPosit)
      • Custom script: call RemoveLocation (udg_BossPosit)
 

Squeekems

TH.net Regular
Reaction score
11
Thanks, Ayanami. I had don't this before and it worked great. I just forgot what had to be done for that situation. Thank so much!

re-making ulduar? :D
Lol, no. Actually, I am making just a single boss fight. I'm planning on trying to make a bunch of different single boss maps. This one is a succubus. And I knew people would understand "insanity management system" over "charm management system." It's essentially the same thing. But you won't being entering this boss's head. <(o_- )>
 

GFreak45

I didnt slap you, i high 5'd your face.
Reaction score
130
bummer!
i love hitting his squishy brain with my mace on my dk ! :p

if you need help doing a boss fight pm me, i have tons of ideas for boss fights and im great with gui triggering :)
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top