Neutral Passive Unit Patrol Problem

nandosman

New Member
Reaction score
4
I've a unit that belongs to neutral passive player, lets call it 'Roger'. I need it to patrol the whole map (in a defined route i have). Now, if it's attacked, i want it to attack back to its attacker, until the unit is dead, or flees, then going back to its patrol route. So, I'm using several triggers for this:

1) First I created 6 regions and created 1 trigger for each one:

Trigger:
  • Trigger
    • Events
      • Unit - A unit enters <region 1>
    • Conditions
      • (Triggering unit) Equal to <Roger>
    • Actions
      • Unit - Order <Roger> to Move To (Center of <region 2>)
      • Set Roger_CurrentDestiny = (Center of <region 2>)


And so on, until i complete a circular route for the patrol, that should work fine.

Roger_CurrentDestin is a global variable that tells me where is roger going right now (Variable of type Point).

now, for the attack, i only figured out this solution:

Trigger:
  • Attack
    • Events
      • Unit - <Roger> Is attacked
    • Conditions
      • (Owner of (Attacking unit)) Not equal to Neutral Hostile
    • Actions
      • Unit - <Roger> to Attack (Attacking unit)
      • Set Roger_CurrentPos = (Position of <Roger>)
      • Trigger - Turn on Attack_Finish <gen>
      • Trigger - Turn on Attack_Flee <gen>
      • Trigger - Turn off (This trigger)


Roger_CurrentPos is a global variable that I use to save the Point where Roger was first attacked.

So, every time a unit that belongs to a player attacks roger, roger will attack back the unit. The attack command will stop when the attacker dies or the attacker flees. Its controled by this:

Trigger:
  • Attack_Finish
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Killing unit) Equal to <Roger>
    • Actions
      • Unit - Order <Roger> to Move To Roger_CurrentDestiny
      • Trigger - Turn on Attack <gen>
      • Trigger - Turn off Attack_Flee <gen>
      • Trigger - Turn off (This trigger)


The Attack Flee Trigger is done with Jass:

JASS:
function Trig_Attacker_Flee_Conditions takes nothing returns boolean
    if (GetTriggerUnit() == <Roger> ) then
        return true
    endif
    return false
endfunction

function Trig_Attacker_Flee_Actions takes nothing returns nothing
    call IssuePointOrderLoc( <Roger>, "move", udg_Roger_CurrentDestiny)    
endfunction

//===========================================================================
function InitTrig_Attacker_Flee takes nothing returns nothing
    set gg_trg_Attacker_Flee = CreateTrigger(  )
    call TriggerRegisterLeaveRectSimple( gg_trg_Attacker_Flee, RectFromCenterSizeBJ(udg_Roger_CurrentPos, 1000.00, 1000.00) )
    call TriggerAddCondition( gg_trg_Attacker_Flee, Condition( function Trig_Attacker_Flee_Conditions ) )
    call TriggerAddAction( gg_trg_Attacker_Flee, function Trig_Attacker_Flee_Actions )
endfunction


What I do here is ask if Roger walked certain distance from the initial point he was attacked, and if he did, order him to continue with his patrol.


Now, The Problem: The reason I'm posting this is becouse none of this is properly working:

1) When I assign Roger to Neutral Passive Player, he just ignores the orders of moving to the regions. This can be fixed by assign Roger to an unused player, but i want Roger to be Passive Neutral.

2) Supposing Roger is doing fine with his patrol, I need to figure out how to make him stay and fight with a whole army if he's attacked by it, not just until a single unit dies, but until the whole army dies :S.

3) There's something wrong with the flee system, becouse he just runs after the attacking unit and never stops until its dead :S.

4) If anyone can give me some advise about improving this methods, welcome.

Any help is appreciated, thx.
 

jig7c

Stop reading me...-statement
Reaction score
123
wrong
Trigger:
  • Trigger
    • Events
      • Unit - A unit enters <region 1>
    • Conditions
      • (Triggering unit) Equal to <Roger>
    • Actions
      • Unit - Order <Roger> to Move To (Center of <region 2>)
      • Set Roger_CurrentDestiny = (Center of <region 2>)


right
Trigger:
  • Trigger
    • Events
      • Unit - A unit enters <region 1>
    • Conditions
      • (Triggering unit) Equal to <Roger>
    • Actions
      • Set Point = (Center of <region 2>)
      • Unit - Order <Roger> to Attack-Move To Point
      • Set Roger_CurrentDestiny = (Center of <region 2>)
      • custom script: call RemoveLocation (udg_Point)


try setting it so that every 1 second, it tells Roger to attack-move to another region...
 

nandosman

New Member
Reaction score
4
whats that Point variable for?? it cant be attack-move, becouse the idea is to make roger patrol the area without causing trouble, unless someone else attakcs him
 

nandosman

New Member
Reaction score
4
mmm then what about this:
Trigger:
  • Trigger
    • Events
      • Unit - A unit enters <region 1>
    • Conditions
      • (Triggering unit) Equal to <Roger>
    • Actions
      • Set Roger_CurrentDestiny = (Center of <region 2>)
      • Unit - Order <Roger> to Move To Roger_CurrentDestiny
 

Accname

2D-Graphics enthusiast
Reaction score
1,463
1)
neutral passive/hostile units cannot be ordered because they are owned by an AI player (yes neutral counts as AI) but you can switch the AI off for specific units using this action:
Trigger:
  • AI - Ignore Roger's guard position


2-4)
Using Attack/Move will make your unit automatically attack enemy units if they are close. Because you use neutral passive as owner the attacking player will most probably be allied to Roger. Try to set the alliance towards the attacking player to hostile if Roger is attacked and back to allied if the battle is over.
 

nandosman

New Member
Reaction score
4
1)
neutral passive/hostile units cannot be ordered because they are owned by an AI player (yes neutral counts as AI) but you can switch the AI off for specific units using this action:
Trigger:
  • AI - Ignore Roger's guard position

Let me try :thup:

2-4)
Using Attack/Move will make your unit automatically attack enemy units if they are close. Because you use neutral passive as owner the attacking player will most probably be allied to Roger. Try to set the alliance towards the attacking player to hostile if Roger is attacked and back to allied if the battle is over.

yes i understand your point, but i dont want roger to attack units that comes close. I just want roger to attack units ONLY if he's attacked first, but if he's drafted too far away from his patrol route following some attacker, make him give up with the attack and go back to his patrol. Thats the reason for the other triggers. Also, other thing i need help to, if roger is attacked by more than a single unit (an army for example), make him battle the whole army, and not just the first unit who attacked him first, as it's stated in the triggers i made :(
 

nandosman

New Member
Reaction score
4
1)
neutral passive/hostile units cannot be ordered because they are owned by an AI player (yes neutral counts as AI) but you can switch the AI off for specific units using this action:
Trigger:
  • AI - Ignore Roger's guard position

Didn't Work :(
 

nandosman

New Member
Reaction score
4
I'm giving Roger the order to go to one of the regions in the map initialization trigger, and when the map starts, he walks to the region, but before arriving to its destiny, he returns to the original position he started, and stays there :S

If I change from neutral Passive to any of the other players, then it works, but i want it to be neutral passive :S
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • Ghan Ghan:
    Still lurking
    +3
  • The Helper The Helper:
    I am great and it is fantastic to see you my friend!
    +1
  • The Helper The Helper:
    If you are new to the site please check out the Recipe and Food Forum https://www.thehelper.net/forums/recipes-and-food.220/
  • Monovertex Monovertex:
    How come you're so into recipes lately? Never saw this much interest in this topic in the old days of TH.net
  • Monovertex Monovertex:
    Hmm, how do I change my signature?
  • tom_mai78101 tom_mai78101:
    Signatures can be edit in your account profile. As for the old stuffs, I'm thinking it's because Blizzard is now under Microsoft, and because of Microsoft Xbox going the way it is, it's dreadful.
  • The Helper The Helper:
    I am not big on the recipes I am just promoting them - I use the site as a practice place promoting stuff
    +2
  • Monovertex Monovertex:
    @tom_mai78101 I must be blind. If I go on my profile I don't see any area to edit the signature; If I go to account details (settings) I don't see any signature area either.
  • The Helper The Helper:
    You can get there if you click the bell icon (alerts) and choose preferences from the bottom, signature will be in the menu on the left there https://www.thehelper.net/account/preferences
  • The Helper The Helper:
    I think I need to split the Sci/Tech news forum into 2 one for Science and one for Tech but I am hating all the moving of posts I would have to do
  • The Helper The Helper:
    What is up Old Mountain Shadow?
  • The Helper The Helper:
    Happy Thursday!
    +1
  • Varine Varine:
    Crazy how much 3d printing has come in the last few years. Sad that it's not as easily modifiable though
  • Varine Varine:
    I bought an Ender 3 during the pandemic and tinkered with it all the time. Just bought a Sovol, not as easy. I'm trying to make it use a different nozzle because I have a fuck ton of Volcanos, and they use what is basically a modified volcano that is just a smidge longer, and almost every part on this thing needs to be redone to make it work
  • Varine Varine:
    Luckily I have a 3d printer for that, I guess. But it's ridiculous. The regular volcanos are 21mm, these Sovol versions are about 23.5mm
  • Varine Varine:
    So, 2.5mm longer. But the thing that measures the bed is about 1.5mm above the nozzle, so if I swap it with a volcano then I'm 1mm behind it. So cool, new bracket to swap that, but THEN the fan shroud to direct air at the part is ALSO going to be .5mm to low, and so I need to redo that, but by doing that it is a little bit off where it should be blowing and it's throwing it at the heating block instead of the part, and fuck man
  • Varine Varine:
    I didn't realize they designed this entire thing to NOT be modded. I would have just got a fucking Bambu if I knew that, the whole point was I could fuck with this. And no one else makes shit for Sovol so I have to go through them, and they have... interesting pricing models. So I have a new extruder altogether that I'm taking apart and going to just design a whole new one to use my nozzles. Dumb design.
  • Varine Varine:
    Can't just buy a new heatblock, you need to get a whole hotend - so block, heater cartridge, thermistor, heatbreak, and nozzle. And they put this fucking paste in there so I can't take the thermistor or cartridge out with any ease, that's 30 dollars. Or you can get the whole extrudor with the direct driver AND that heatblock for like 50, but you still can't get any of it to come apart
  • Varine Varine:
    Partsbuilt has individual parts I found but they're expensive. I think I can get bits swapped around and make this work with generic shit though
  • Ghan Ghan:
    Heard Houston got hit pretty bad by storms last night. Hope all is well with TH.
  • The Helper The Helper:
    Power back on finally - all is good here no damage
    +2
  • V-SNES V-SNES:
    Happy Friday!
    +1
  • The Helper The Helper:
    New recipe is another summer dessert Berry and Peach Cheesecake - https://www.thehelper.net/threads/recipe-berry-and-peach-cheesecake.194169/

      The Helper Discord

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top