Announcement

Collapse
No announcement yet.

Any way to change the health on vehicles in Kismet?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Any way to change the health on vehicles in Kismet?

    Hey everyone. I'm currently making an assault type map for UT3, and was wondering if there was a way to change the health of the tank or other vehicles in Kismet, (the tank has 900 HP, and maybe I want to change it to 1200) similar to how in AS-RobotFactory in UT2K4 had the Tank at 1600 HP.

    I can't use Unreal Script (I wish I could) so any suggestions are welcome.

    Thanks!

    #2
    This is UT3 not UDK. All these nodes do not exist. Modify property is the important one which does not exists. Even causing damage of "-100" for instance wouldn't help.

    Comment


      #3
      Ok... I'm still quite confused. Could you please let me know where the modify health and modify property options are in Kismet? I searched through every category: action, condition, variable, event and I could not seem to find it. Also, could you reference Henrik's tutorial?

      Thanks.

      EDIT: Well, that makes sense. I haven't heard of these options, because I've never used UDK. Anyway, after reading RattleSN4K3's post, is there any other way of doing this?

      Comment


        #4
        Most likely, the only way to accomplish what you wish without unrealscript is to use all the HealDamage (UT) action to heal the vehicle a set number of times once its health has fallen below a certain threshold (keep it topped up or heal it once, etc.) To do this you need to use a GetObjectProperty action with the spawned vehicle as target object, get the "Health" property, run a comparison, loop, gate your healdamage action with gate,bool,additional comparison, etc. You must set an instigator in order to heal vehicles using the Kismet action or it will fail.

        Comment


          #5
          you can copy/paste this working example to your kismet editor to see how to set it up.
          Code:
          Begin Object Class=UTSeqEvent_VehicleFactory Name=UTSeqEvent_VehicleFactory_1 Archetype=UTSeqEvent_VehicleFactory'UTGame.Default__UTSeqEvent_VehicleFactory'
             Originator=UTVehicleFactory_Goliath'UTVehicleFactory_Goliath_1'
             MaxWidth=346
             OutputLinks(0)=(Links=((LinkedOp=SeqAct_GetProperty'SeqAct_GetProperty_1'),(LinkedOp=SeqAct_Gate'SeqAct_Gate_1',InputLinkIdx=1)),DrawY=715)
             OutputLinks(1)=(DrawY=737)
             OutputLinks(2)=(DrawY=759)
             OutputLinks(3)=(DrawY=781)
             OutputLinks(4)=(DrawY=803)
             VariableLinks(0)=(LinkedVariables=(SeqVar_Object'SeqVar_Object_15'),DrawX=5060)
             ObjInstanceVersion=1
             ParentSequence=Sequence'Main_Sequence'
             ObjPosX=4887
             ObjPosY=645
             ObjName="UTVehicleFactory_Goliath_1 Vehicle Factory Event"
             DrawWidth=230
             DrawHeight=240
             Name="UTSeqEvent_VehicleFactory_1"
             ObjectArchetype=UTSeqEvent_VehicleFactory'UTGame.Default__UTSeqEvent_VehicleFactory'
          End Object
          Begin Object Class=UTSeqAct_HealDamage Name=UTSeqAct_HealDamage_2 Archetype=UTSeqAct_HealDamage'UTGame.Default__UTSeqAct_HealDamage'
             bSuperHeal=True
             HealAmount=300
             InputLinks(0)=(DrawY=707)
             OutputLinks(0)=(DrawY=707)
             VariableLinks(0)=(LinkedVariables=(SeqVar_Object'SeqVar_Object_15'),DrawX=6054)
             VariableLinks(1)=(bHidden=True,DrawX=3281)
             VariableLinks(2)=(LinkedVariables=(SeqVar_Object'SeqVar_Object_16'),DrawX=6124)
             ObjInstanceVersion=1
             ParentSequence=Sequence'Main_Sequence'
             ObjPosX=6016
             ObjPosY=673
             DrawWidth=156
             DrawHeight=61
             Name="UTSeqAct_HealDamage_2"
             ObjectArchetype=UTSeqAct_HealDamage'UTGame.Default__UTSeqAct_HealDamage'
          End Object
          Begin Object Class=SeqAct_GetProperty Name=SeqAct_GetProperty_1 Archetype=SeqAct_GetProperty'Engine.Default__SeqAct_GetProperty'
             PropertyName="Health"
             InputLinks(0)=(DrawY=812)
             OutputLinks(0)=(Links=((LinkedOp=SeqCond_CompareInt'SeqCond_CompareInt_1')),DrawY=812)
             VariableLinks(0)=(LinkedVariables=(SeqVar_Object'SeqVar_Object_15'),DrawX=5331)
             VariableLinks(1)=(DrawX=5391)
             VariableLinks(2)=(LinkedVariables=(SeqVar_Int'SeqVar_Int_6'),DrawX=5438)
             VariableLinks(3)=(DrawX=5480)
             VariableLinks(4)=(DrawX=5532)
             VariableLinks(5)=(DrawX=5581)
             ObjInstanceVersion=1
             ParentSequence=Sequence'Main_Sequence'
             ObjPosX=5293
             ObjPosY=778
             DrawWidth=318
             DrawHeight=61
             Name="SeqAct_GetProperty_1"
             ObjectArchetype=SeqAct_GetProperty'Engine.Default__SeqAct_GetProperty'
          End Object
          Begin Object Class=SeqCond_CompareInt Name=SeqCond_CompareInt_1 Archetype=SeqCond_CompareInt'Engine.Default__SeqCond_CompareInt'
             ValueB=600
             InputLinks(0)=(DrawY=650)
             OutputLinks(0)=(DrawY=606)
             OutputLinks(1)=(DrawY=628)
             OutputLinks(2)=(DrawY=650)
             OutputLinks(3)=(Links=((LinkedOp=SeqAct_Gate'SeqAct_Gate_1')),DrawY=672)
             OutputLinks(4)=(DrawY=694)
             VariableLinks(0)=(LinkedVariables=(SeqVar_Int'SeqVar_Int_6'),DrawX=5780)
             VariableLinks(1)=(DrawX=5805)
             ObjInstanceVersion=1
             ParentSequence=Sequence'Main_Sequence'
             ObjPosX=5747
             ObjPosY=568
             DrawWidth=91
             DrawHeight=157
             Name="SeqCond_CompareInt_1"
             ObjectArchetype=SeqCond_CompareInt'Engine.Default__SeqCond_CompareInt'
          End Object
          Begin Object Class=SeqVar_Object Name=SeqVar_Object_15 Archetype=SeqVar_Object'Engine.Default__SeqVar_Object'
             ObjInstanceVersion=1
             ParentSequence=Sequence'Main_Sequence'
             ObjPosX=5357
             ObjPosY=1168
             DrawWidth=32
             DrawHeight=32
             Name="SeqVar_Object_15"
             ObjectArchetype=SeqVar_Object'Engine.Default__SeqVar_Object'
          End Object
          Begin Object Class=SeqVar_Int Name=SeqVar_Int_6 Archetype=SeqVar_Int'Engine.Default__SeqVar_Int'
             IntValue=900
             ObjInstanceVersion=1
             ParentSequence=Sequence'Main_Sequence'
             ObjPosX=5534
             ObjPosY=1023
             DrawWidth=32
             DrawHeight=32
             Name="SeqVar_Int_6"
             ObjectArchetype=SeqVar_Int'Engine.Default__SeqVar_Int'
          End Object
          Begin Object Class=SeqEvent_PlayerSpawned Name=SeqEvent_PlayerSpawned_1 Archetype=SeqEvent_PlayerSpawned'Engine.Default__SeqEvent_PlayerSpawned'
             MaxWidth=156
             OutputLinks(0)=(DrawY=-164,bHidden=True)
             VariableLinks(0)=(LinkedVariables=(SeqVar_Object'SeqVar_Object_16'),DrawX=5968)
             VariableLinks(1)=(DrawX=6038)
             ObjInstanceVersion=1
             ParentSequence=Sequence'Main_Sequence'
             ObjPosX=5920
             ObjPosY=962
             DrawWidth=86
             DrawHeight=128
             Name="SeqEvent_PlayerSpawned_1"
             ObjectArchetype=SeqEvent_PlayerSpawned'Engine.Default__SeqEvent_PlayerSpawned'
          End Object
          Begin Object Class=SeqVar_Object Name=SeqVar_Object_16 Archetype=SeqVar_Object'Engine.Default__SeqVar_Object'
             ObjInstanceVersion=1
             ParentSequence=Sequence'Main_Sequence'
             ObjPosX=6244
             ObjPosY=1138
             DrawWidth=32
             DrawHeight=32
             Name="SeqVar_Object_16"
             ObjectArchetype=SeqVar_Object'Engine.Default__SeqVar_Object'
          End Object
          Begin Object Class=SeqAct_Gate Name=SeqAct_Gate_1 Archetype=SeqAct_Gate'Engine.Default__SeqAct_Gate'
             AutoCloseCount=1
             InputLinks(0)=(DrawY=675)
             InputLinks(1)=(DrawY=697)
             InputLinks(2)=(DrawY=719)
             InputLinks(3)=(DrawY=741)
             OutputLinks(0)=(Links=((LinkedOp=UTSeqAct_HealDamage'UTSeqAct_HealDamage_2')),DrawY=708)
             ObjInstanceVersion=1
             ParentSequence=Sequence'Main_Sequence'
             ObjPosX=5876
             ObjPosY=638
             DrawWidth=82
             DrawHeight=117
             Name="SeqAct_Gate_1"
             ObjectArchetype=SeqAct_Gate'Engine.Default__SeqAct_Gate'
          End Object

          Comment


            #6
            The problem is he wants to have a higher HP than the HealthMax which any new HP is clamped to.

            PS: Deleted Post #2 from frankit. -.- Now my posts looks stupid.

            Comment


              #7
              yes, this is a legitimate problem with gameplay significant woe if max health is less than max damage of a singular attack (such as redeemer's 2250 dmg, or collective instantaneous attacks, etc) and if the intent is to keep the vehicle in play upon such great attacks, otherwise results yielded from kismet are ok other than cosmetically. Really script is best way to yield correct result.

              Comment


                #8
                If think such UnrealScript could be serversided only and included into map.

                Edit: HealthMax is not replicated. It wouldn't work well for clients.

                Comment


                  #9
                  You could do that in '04. I embedded many vehicles & weapons into maps & had no external packages.

                  Comment


                    #10
                    The last time I embedded a script file (not serversided only), it asked for the file on connection and demo load. Have you tried adding scripts to maps recently in UT3?

                    Comment


                      #11
                      No I haven't but I still have the line of code to embed the files into maps in '04.

                      This is what I used to embed my Spider tanks into maps for Ut2004: obj load file=SpiderTankII.u package=myLevel

                      If it works for UT3 then all you should have to do is change the myLevel to your map name I assume. So if you had a ModdedGoliath.u to embed into a map called WAR-RobotFactory-AS you would type obj load file=ModdedGoliath.u package=WAR-RobotFactory-AS

                      Comment


                        #12
                        This topic is very interesting. Anybody tested it out yet? Look's like it might take a whole day or more to try this

                        What would be the impact for PS3 ? Would this allow mutators to be part of the map?

                        - Mutators can be placeable objects ? - That's incredible, this topic needs a thread to itself, Rumple can you enlighten us with you UT2004 example?
                        - maybe try it with you super huge skeleton titan krall thing?

                        Comment


                          #13
                          I tried a *.u file embed using the UT2004 command, and it does not seem to work that way in UT3 editor. I also tried using savepackage commands, which just seemed to rename it to save.tmp, then back to the it's original *.u filename. When trying the above, I also tried the Actor add commands and specified the map package as the base path to the original package, then to the end class a few ways, and this also did not help. ' Doesn't seem likely that we can do this anymore.

                          BTW, Yes, TKBS, you can call a mutator from a placeable object and there is thread with a working solution for that already. (Don't be confused, this does require a separate .u file distributed with the map)

                          Originally posted by RattleSN4K3 View Post
                          If think such UnrealScript could be serversided only and included into map.

                          Edit: HealthMax is not replicated. It wouldn't work well for clients.
                          --In this case, one may create an alike class with greater health set via defaultproperties, rather than a subclass which sets health via a some non-replicated function, or whatever; it is technically a new vehicle at this point.

                          Comment


                            #14
                            Thanks alot for your reply NickG

                            i have way too much happening at the moment but i have compiled some information on the topic. This is exactly what i need to remake the Pressure volume for UT99

                            If it helps here is what i found but i have not had chance to read it:
                             
                            Spoiler

                             
                            Spoiler


                            Ini (for separate mutator, not needed for embed)
                             
                            Spoiler

                            Instructions once written: (Embedding a Mutator in a Map)
                             
                            Spoiler


                            Credits:
                            http://wiki.beyondunreal.com/Legacy:...bedded_Mutator

                            hopefully im on the right track and not spamming random info lol, Should we make a new thread ?

                            Comment


                              #15
                              You are on your right track but embedded scripts are not fully supported (like it was in UT2004). The way I got embedded scripts working bugged demoplayback (and I think there was also a problem with connecting to a server running that map).

                              Here is one example of a fully embedded custom script featuring a modified version of the JumpPads for LevelDesigner to set specific condition when the jumppad is allowed to be used for a single player (like disabling BootJump, disabling JumpPad for only Flag carriers, only allow blue team, ...): RSJumpPad Showcase

                              You can see the problem by recording a demo file and trying to star the playback of that demo. It asks for the script package. No sucess with "obj load" which doesn't exist anymore for UE3 AFAIK.



                              I do not recommend to use any full embedded mutator. Also half-embedded mutators (aka referenced mutators) shouldn't be used as well. General maps should be made for the stock game. Do not add default mutators to a map. However, if a map needs custom scripting (like multiple point gravtiy), such scripts should be just referenced by a map and packaged along the map file (for published and unpublished files).



                              This is the thread NickG is talking about where I also provided a nice easy basic example.

                              Comment

                              Working...
                              X