TTLG|Thief|Bioshock|System Shock|Deus Ex|Mobile
Results 1 to 15 of 15

Thread: Guards swapping weapons

  1. #1
    Member
    Registered: Jan 2006
    Location: On the tip of your tongue.

    Guards swapping weapons

    Anyone got a tutorial, solid explanation, or better yet, a demo mission of guards that can switch between sword and bow?

    I've been trying to deconstruct the Equilibrium Keepers, but there's so much extra stuff in there to do with invisibility and whatnot that it's hard to work out which bits pertain to what I need.

  2. #2
    Dˇttirin klŠ­ist oft mˇ­ur m÷ttli
    Registered: Apr 2015
    When Garrett gets close to the guards in Equilibrium, metaproperties will be activated/deactivated. Look at the receptrons of the NewKeeper archetype.
    The metaproperties are "RunnySwordsman", "KpBowMan ", etc. The metaproperties can be found in the Metaproperty/KeeperTree archetype.

  3. #3
    Dˇttirin klŠ­ist oft mˇ­ur m÷ttli
    Registered: Apr 2015
    There are a big bunch of metaproperties involved. About 20.
    It will take many hours to copy this. I can do a gamesys.dml.

  4. #4
    Member
    Registered: Jan 2006
    Location: On the tip of your tongue.
    OK I've got this working, just about, by copying bits of Equilibrium. However it seems a bit unpredictable, and I have no idea why it works. The guard will switch, but it doesn't seem to be obviously proximity-based, and he much prefers being an archer. Here's my setup; notes and questions in red. Mainly I want to understand how and why the change is triggering, because it seems fairly random at the moment, but changing the numbers just straight up breaks it. I'm sure there's some maths involved which I don't understand (basic multiplication is about the most complicated maths my brain can manage )

    New Stim:
    - GarrettProxStim

    MultiWeaponBow (new Metaproperty):
    Settings were copied verbatim from bowman:
    - AI > AI Core > AI: Human with bow
    - Ranged Combat > Ranged Combat (Minimum Distance: 10 / Ideal Distance: 40 / Firing Delay: 1.15 / Cover Desire: High / Decay Speed: 0.01 / Fire While Moving: Never)
    - Creature > Time Warp: 0.85
    - Dark Gamesys > Alt Link Location (Mesh Joint: 8 / X Rotation: 0 / Y Rotation: 9300 / Z Rotation: 15000 / Offset X: -0.3 / Y: -0.3 / Z: 1.3) <- Guessing this is to do with a quiver arrow and probably unnecessary.
    - Engine Features > Inherit Contains: TRUE <- Possibly also related to quiver.
    - Motions > ActorTagList: WithBow 0
    - Shape > Model Name: archer01 <- For testing I'm using obviously different models. Final version will be less jarring.
    - Act/React:
    - Receptrons - Stimulus: GarrettProxStim / Min Intensity: 165 / Max Intensity: 200 / Effect: Remove Metaproperty / Target Object: Me / Agent Object: MultiWeaponBow <- I don't understand why these numbers.

    MultiWeaponSword (new Metaproperty):
    - Motions > ActorTagList: WithSword 0 <- Not sure I actually need this as a separate metaprop - adding and removing the bow one will probably do the trick if WithSword 0 is on the guard by default anyway.

    On the Garrett archetype:
    - Act/React:
    - Receptrons - Stimulus: GarrettProxStim / Min Intensity: 0 / Max Intensity: No Max / Effect: Stimulate Object / Target Object: Source / Agent Object: Me / (Effect: Stimulus: GarrettProxStim / Multiply by: 1.00 / Then Add: 100.00) <- Guessing this causes GarrettProxStim to stim things within a radius of the player, with falloff or something? Unclear what exactly this does.

    MultiWeaponGuard (new archetype under Human) with properties:
    - Schema > Class Tags: CreatureType Guard
    - Shape > Model Name: SwGard01 <- For testing I'm using obviously different models. Final version will be less jarring.
    - Speech > Voice: vguardmen
    - Metaproperty: MultiWeaponSword
    - Act/React:
    - Sources - Stimulus: GarrettProxStim / Propagator: Radius / Intensity: 100 (Shape - Radius: 25 / Flags: None / Dispersion: Linear) (Life Cycle - Flags: No Max Firings / Period: 500 / Max Firings: 1 / Intensity Slope: 0.00) <- No idea what this does.
    - Receptrons - Stimulus: GarrettProxStim / Min Intensity: 101 / Max Intensity: 150 / Effect: Add MetaProperty / Target Object: Me / Agent Object: MultiWeaponBow
    - Receptrons - Stimulus: GarrettProxStim / Min Intensity: 101 / Max Intensity: 150 / Effect: Remove MetaProperty / Target Object: Me / Agent Object: MultiWeaponSword
    ^ Unclear on how these receptrons actually get triggered, i.e. what the Intensity numbers actually mean.

    On the Concrete guard:

    - Links: Flavor: AIProjectile / From: A MultiWeaponGuard / To: broadhead / Data: (same as a normal bowman) <- Not sure why but this link does not copy onto a concrete instance from the archetype. It must be added to each concrete guard.

    Edit: Of the metaproperties in Equilibrium, only one or two actually seemed to affect weapon changing.
    Last edited by nicked; 2nd Nov 2019 at 12:25. Reason: Unna replied while I was typing.

  5. #5
    Dˇttirin klŠ­ist oft mˇ­ur m÷ttli
    Registered: Apr 2015
    There are custom stims on metaproperties as well. The metaproperties on the NewKeepers are just the tip of the iceberg. More metaproperties are involved. Wait until tomorrow, then you get a dml.

  6. #6
    Dˇttirin klŠ­ist oft mˇ­ur m÷ttli
    Registered: Apr 2015
    Here's the dml.
    It will create almost everything in your gamesys for the New Bow Keeper: stims, metaproperties, archetype entries.
    But since it was taken from another gamesys, some stuff will be completely messed up.
    NewDark 1.27 CreateArch feature isn't exactly user friendly. I can create archetype entries with names
    for example

    CreateArch "Nicked" "Human"
    will create an entry "Nicked" in the human archetype.

    Sadly this will not work with receptrons. Receptrons often rely on archetype numbers. They will be different in a different gamesys. Since I used the Equillibrium gamesys to export the data, most receptrons won't be compatible.
    But you can fix this in about 10min. I tell you how.
    First, load the gamesys.dml (installation instructions). Watch DromEd monolog loading the dml.
    In DromEd, hit F5--Metaproperty
    -You'll see the new entry "Keepertree" and many new metaproperties there. Compare the receptrons of every metaproperty with the same metaproperty receptrons in Equillibrium. You'll find many "UNKNOWN" entries.
    They must have the same data as in Equillibrium.
    -Check the stims. 3 new stims have been created: Metastim, Garrettstim, Frobstim. Many new entries in "VisibilityStims"
    -Now check the object archetype
    A new entry "NewKeeper" was created. Adjust the receptrons in this archetype, there are some "Unknown" for sure
    A new entry for the NewKeeper corpse (SwanSongKeeper)
    A bow for the keeper was created
    Garrett has a Garrettstim

    For same new archetypes, you might want new resources (textures).

    Save the gam/cow
    Now create a NewKeeper. There's an original bug with NewKeepers in Equillibrium: The AIProjectile might be UNKNOWN. It needs a "broadhead".
    The archers in Equillibrium shoot/aim arrows like baby burricks. Same data, I didn't fix this.

    For testing I recommend to render the AI visible first then you can adjust transparency again.
    If the NewKeeper is aware of you and in "bow-mode", he will get the metaproperty "KpBowMan"

    Code:
    DML1//Equillibrium Archers//mygam.gam.dml
    
    //Stimulus
    
    
    CreateArch "Stimulus" "VisibilityStims"
    
    
    CreateArch "Stimulus" "MetaStim"
    
    
    CreateArch  "VisibilityStims" "BounceStim2"
    
    
    CreateArch  "VisibilityStims" "BounceStim1"
    
    
    CreateArch  "VisibilityStims" "ShadowTestStim"
    
    
    CreateArch  "VisibilityStims" "CoshEffectStim"
    
    
    CreateArch  "VisibilityStims" "BowVisStim"
    
    
    CreateArch  "VisibilityStims" "FlareStim"
    
    
    CreateArch "Stimulus" "PlayerStims"
    
    
    CreateArch "PlayerStims" "GarrettStim"
    
    
    CreateArch "PlayerStims" "FrobStim"
    
    
    
    
    
    
    
    
    //Metaproperties
    CreateArch "Metaproperty" "Keepertree"
    
    
    CreateArch "Keepertree" "KPVis"
    
    
    CreateArch "KPVis" "ShadowTest"
    
    
    +Receptron "ShadowTest" "ShadowTestStim"
    {
        Min 100
        Max 102
    
    
        Target Me
        Agent Me
    
    
        Effect "stimulate"
        {
            "Stimulus" "LightBright"
            "Multiply By" 0.00
            "Then Add" 1.00
        }
    }
    
    
    ++StimSource "ShadowTest" "ShadowTestStim"
    {
        Intensity 1
    
    
        Propagator "Radius"
        {
            Life
            {
                "Flags" "[None]"
                "Period" 750
                "Max Firings" 2
                "Intensity Slope" 100.00
            }
    
    
            Shape
            {
                "Radius" 0.50
                "Flags" "[None]"
                "Dispersion" "None"
            }
        }
    }
    
    
    CreateArch "KPVis""KpVisCtrl"
    
    
    
    
    +Receptron "KpVisCtrl" "LightBright"
    {
        Min None
        Max None
    
    
        Target Me
        Agent -6702
    
    
        Effect "rem_metaprop"
    }
    
    
    ++Receptron "KpVisCtrl" "LightBright"
    {
        Min 20
        Max None
    
    
        Target Me
        Agent Me
    
    
        Effect "stimulate"
        {
            "Stimulus" "BounceStim1"
            "Multiply By" 0.00
            "Then Add" 1.00
        }
    }
    
    
    ++Receptron "KpVisCtrl" "LightBright"
    {
        Min 0
        Max 19
    
    
        Target Me
        Agent -6649
    
    
        Effect "add_prop"
        {
            "Prop Name" "RenderAlpha"
        }
    }
    
    
    ++Receptron "KpVisCtrl" "LightBright"
    {
        Min 20
        Max 59
    
    
        Target Me
        Agent -6652
    
    
        Effect "add_prop"
        {
            "Prop Name" "RenderAlpha"
        }
    }
    
    
    ++Receptron "KpVisCtrl" "LightBright"
    {
        Min 60
        Max 119
    
    
        Target Me
        Agent -6653
    
    
        Effect "add_prop"
        {
            "Prop Name" "RenderAlpha"
        }
    }
    
    
    ++Receptron "KpVisCtrl" "LightBright"
    {
        Min 120
        Max None
    
    
        Target Me
        Agent -6654
    
    
        Effect "add_prop"
        {
            "Prop Name" "RenderAlpha"
        }
    }
    
    
    ++Receptron "KpVisCtrl" "WeaponStim"
    {
        Min None
        Max None
    
    
        Target Me
        Agent -6674
    
    
        Effect "rem_metaprop"
    }
    
    
    ++Receptron "KpVisCtrl" "WeaponStim"
    {
        Min None
        Max None
    
    
        Target Me
        Agent Me
    
    
        Effect "stimulate"
        {
            "Stimulus" "BounceStim2"
            "Multiply By" 0.00
            "Then Add" 1.00
        }
    }
    
    
    ++Receptron "KpVisCtrl" "Touch"
    {
        Min None
        Max None
    
    
        Target Me
        Agent -6674
    
    
        Effect "rem_metaprop"
    }
    
    
    ++Receptron "KpVisCtrl" "Touch"
    {
        Min None
        Max None
    
    
        Target Me
        Agent Me
    
    
        Effect "stimulate"
        {
            "Stimulus" "BounceStim2"
            "Multiply By" 0.00
            "Then Add" 1.00
        }
    }
    
    
    ++Receptron "KpVisCtrl" "BounceStim1"
    {
        Min 0
        Max 2
    
    
        Target Me
        Agent Me
    
    
        Effect "stimulate"
        {
            "Stimulus" "BounceStim1"
            "Multiply By" 1.00
            "Then Add" 50.00
        }
    }
    
    
    ++Receptron "KpVisCtrl" "BounceStim1"
    {
        Min 50
        Max 52
    
    
        Target Me
        Agent -6702
    
    
        Effect "add_metaprop"
    }
    
    
    ++Receptron "KpVisCtrl" "BounceStim2"
    {
        Min 0
        Max 52
    
    
        Target Me
        Agent Me
    
    
        Effect "stimulate"
        {
            "Stimulus" "BounceStim2"
            "Multiply By" 1.00
            "Then Add" 50.00
        }
    }
    
    
    ++Receptron "KpVisCtrl" "BounceStim2"
    {
        Min 100
        Max 102
    
    
        Target Me
        Agent -6674
    
    
        Effect "add_metaprop"
    }
    
    
    ++Receptron "KpVisCtrl" "FlareStim"
    {
        Min None
        Max None
    
    
        Target Me
        Agent -6674
    
    
        Effect "rem_metaprop"
    }
    
    
    ++Receptron "KpVisCtrl" "FlareStim"
    {
        Min None
        Max None
    
    
        Target Me
        Agent Me
    
    
        Effect "stimulate"
        {
            "Stimulus" "BounceStim2"
            "Multiply By" 0.00
            "Then Add" 1.00
        }
    }
    
    
    
    
    CreateArch "KPVis""VisAbort"
    
    
    +Receptron "VisAbort" "LightBright"
    {
        Min None
        Max None
    
    
        Effect "Abort"
    }
    
    
    ++Receptron "VisAbort" "HolyStim"
    {
        Min 0
        Max 2
    
    
        Target Me
        Agent -6654
    
    
        Effect "add_prop"
        {
            "Prop Name" "RenderAlpha"
        }
    }
    
    
    ++Receptron "VisAbort" "HolyStim"
    {
        Min 0
        Max 2
    
    
        Target Me
        Agent Me
    
    
        Effect "stimulate"
        {
            "Stimulus" "LightBright"
            "Multiply By" 0.00
            "Then Add" 125.00
        }
    }
    
    
    ++Receptron "VisAbort" "HolyStim"
    {
        Min 0
        Max 2
    
    
        Target Me
        Agent Me
    
    
        Effect "stimulate"
        {
            "Stimulus" "MetaStim"
            "Multiply By" 0.00
            "Then Add" 1.00
        }
    }
    
    
    ++Receptron "VisAbort" "HolyStim"
    {
        Min 50
        Max 52
    
    
        Target Me
        Agent -6702
    
    
        Effect "add_metaprop"
    }
    
    
    ++Receptron "VisAbort" "HolyStim"
    {
        Min 50
        Max 52
    
    
        Target Me
        Agent -6674
    
    
        Effect "rem_metaprop"
    }
    
    
    ++Receptron "VisAbort" "BounceStim2"
    {
        Min None
        Max None
    
    
        Effect "Abort"
    }
    
    
    ++StimSource "VisAbort" "HolyStim"
    {
        Intensity 1
    
    
        Propagator "Radius"
        {
            Life
            {
                "Flags" "[None]"
                "Period" 4000
                "Max Firings" 2
                "Intensity Slope" 50.00
            }
    
    
            Shape
            {
                "Radius" 1.00
                "Flags" "Line of Sight (raycast)"
                "Dispersion" "None"
            }
        }
    }
    
    
    CreateArch "KPVis" "BowVis"
    
    
    +Receptron "BowVis" "BowVisStim"
    {
        Min 0
        Max 19
    
    
        Target Me
        Agent -6649
    
    
        Effect "add_prop"
        {
            "Prop Name" "RenderAlpha"
        }
    }
    
    
    ++Receptron "BowVis" "BowVisStim"
    {
        Min 20
        Max 59
    
    
        Target Me
        Agent -6652
    
    
        Effect "add_prop"
        {
            "Prop Name" "RenderAlpha"
        }
    }
    
    
    ++Receptron "BowVis" "BowVisStim"
    {
        Min 60
        Max 119
    
    
        Target Me
        Agent -6653
    
    
        Effect "add_prop"
        {
            "Prop Name" "RenderAlpha"
        }
    }
    
    
    ++Receptron "BowVis" "BowVisStim"
    {
        Min 120
        Max None
    
    
        Target Me
        Agent -6654
    
    
        Effect "add_prop"
        {
            "Prop Name" "RenderAlpha"
        }
    }
    
    
    CreateArch "KPVis" "KPVisStores"
    
    
    CreateArch "KPVisStores" "KpVis0"
    {
    +ObjProp "RenderAlpha"
    {
        "" 0.10
    }
    }
    CreateArch "KPVisStores" "KpVis1"
    
    
    {
    +ObjProp "RenderAlpha"
    {
        "" 0.25
    }
    }
    
    
    CreateArch "KPVisStores" "KpVis2"
    
    
    {
    +ObjProp "RenderAlpha"
    {
        "" 0.4
    }
    }
    
    
    CreateArch "KPVisStores" "KpVis3"
    
    
    {
    +ObjProp "RenderAlpha"
    {
        "" 0.8
    }
    }
    
    
    CreateArch "Keepertree" "KPFighter"
    
    
    CreateArch "KPFighter" "KpBowMan"
    
    
    {
    +ObjProp "MotActorTagList"
    {
        "tags" "WithBow 0"
    }
    
    
    // AI->AI Core->AI
    +ObjProp "AI"
    {
        "Behavior set" "Human with bow"
    }
    
    
    // AI->Ranged Combat->Ranged Combat
    +ObjProp "AIRCProp"
    {
        "Minimum Distance" 10
        "Ideal Distance" 40
        "Firing Delay" 0.50
        "Cover Desire" "Very High"
        "Decay Speed" 0.80
        "Fire While Moving" "Very Often"
        "Contain Projectile" FALSE
    }
    
    
    // AI->Responses->Signal response
    +ObjProp "AI_SigRsp"
    {
        "Signal" "hide"
        "Priority" "Low"
        "Response: Step 1" "Goto object(Object,Speed,Motion Tags)"
        "   Argument 1" "@HidePt"
        "   Argument 2" ""
        "   Argument 3" ""
        "Response: Step 2" "Wait(Time(ms),Motion Tags)"
        "   Argument 1"[1] "500"
        "   Argument 2"[1] "Stand 0"
        "   Argument 3"[1] ""
        "Response: Step 3" "Play sound/motion(Sound Concept,Sound Tags,Motion Tags)"
        "   Argument 1"[2] ""
        "   Argument 2"[2] ""
        "   Argument 3"[2] "Search 0, Scan 0"
        "Response: Step 4" "Face(Angle,Object(-1 for angle relative to self))"
        "   Argument 1"[3] "180"
        "   Argument 2"[3] "-1"
        "   Argument 3"[3] ""
        "Response: Step 5" "Play sound/motion(Sound Concept,Sound Tags,Motion Tags)"
        "   Argument 1"[4] ""
        "   Argument 2"[4] ""
        "   Argument 3"[4] "Search 0, Scan 0"
        "Response: Step 6" "Wait(Time(ms),Motion Tags)"
        "   Argument 1"[5] "500"
        "   Argument 2"[5] "Stand 0"
        "   Argument 3"[5] ""
        "Response: Step 7" "Nothing()"
        "   Argument 1"[6] ""
        "   Argument 2"[6] ""
        "   Argument 3"[6] ""
        "Response: Step 8" "Nothing()"
        "   Argument 1"[7] ""
        "   Argument 2"[7] ""
        "   Argument 3"[7] ""
        "Response: Step 9" "Nothing()"
        "   Argument 1"[8] ""
        "   Argument 2"[8] ""
        "   Argument 3"[8] ""
        "Response: Step 10" "Nothing()"
        "   Argument 1"[9] ""
        "   Argument 2"[9] ""
        "   Argument 3"[9] ""
        "Response: Step 11" "Nothing()"
        "   Argument 1"[10] ""
        "   Argument 2"[10] ""
        "   Argument 3"[10] ""
        "Response: Step 12" "Nothing()"
        "   Argument 1"[11] ""
        "   Argument 2"[11] ""
        "   Argument 3"[11] ""
        "Response: Step 13" "Nothing()"
        "   Argument 1"[12] ""
        "   Argument 2"[12] ""
        "   Argument 3"[12] ""
        "Response: Step 14" "Nothing()"
        "   Argument 1"[13] ""
        "   Argument 2"[13] ""
        "   Argument 3"[13] ""
        "Response: Step 15" "Nothing()"
        "   Argument 1"[14] ""
        "   Argument 2"[14] ""
        "   Argument 3"[14] ""
        "Response: Step 16" "Nothing()"
        "   Argument 1"[15] ""
        "   Argument 2"[15] ""
        "   Argument 3"[15] ""
    }
    
    
    // Renderer->Mesh Textures
    +ObjProp "MeshTex"
    {
        "texture in model" "ThiefS01.gif"
        "replace with" "keepernos.pcx"
        "texture in model"[1] ""
        "replace with"[1] ""
        "texture in model"[2] ""
        "replace with"[2] ""
        "texture in model"[3] ""
        "replace with"[3] ""
        "texture in model"[4] ""
        "replace with"[4] ""
        "texture in model"[5] ""
        "replace with"[5] ""
        "texture in model"[6] ""
        "replace with"[6] ""
        "texture in model"[7] ""
        "replace with"[7] ""
        "texture in model"[8] ""
        "replace with"[8] ""
        "texture in model"[9] ""
        "replace with"[9] ""
        "texture in model"[10] ""
        "replace with"[10] ""
        "texture in model"[11] ""
        "replace with"[11] ""
    }
    }
    +MetaProp "KpBowMan" "KpFighter"
    
    
    ++Receptron "KpBowMan" "SlashStim"
    {
        Min 0
        Max None
    
    
        Target Me
        Agent -6642
    
    
        Effect "rem_metaprop"
    }
    
    
    ++Receptron "KpBowMan" "SlashStim"
    {
        Min 0
        Max None
    
    
        Target Me
        Agent -6847
    
    
        Effect "rem_metaprop"
    }
    
    
    ++Receptron "KpBowMan" "GarrettStim"
    {
        Min 165
        Max 200
    
    
        Target Me
        Agent -6642
    
    
        Effect "rem_metaprop"
    }
    
    
    ++Receptron "KpBowMan" "GarrettStim"
    {
        Min 165
        Max 200
    
    
        Target Me
        Agent -6847
    
    
        Effect "rem_metaprop"
    }
    
    
    ++Receptron "KpBowMan" "GarrettStim"
    {
        Min None
        Max None
    
    
        Effect "Abort"
    }
    
    
    ++Receptron "KpBowMan" "MetaStim"
    {
        Min 0
        Max 2
    
    
        Target Me
        Agent -6847
    
    
        Effect "add_metaprop"
    }
    
    
    ++Receptron "KpBowMan" "MetaStim"
    {
        Min 0
        Max 2
    
    
        Effect "Abort"
    }
    
    
    CreateArch "KPFighter" "KpSwordsMan"
    
    
    CreateArch "KPFighter" "RunnyBowMan"
    {
    +ObjProp "MotActorTagList"
    {
        "tags" "WithBow 0, LocoUrgent"
    }
    }
    +MetaProp "RunnyBowman" "KpFighter"
    
    
    +Receptron "RunnyBowman" "MetaStim"
    {
        Min None
        Max None
    
    
        Effect "Abort"
    }
    
    
    CreateArch "KPFighter" "RunnySwordsman"
    {
    +ObjProp "MotActorTagList"
    {
        "tags" "WithSword 0, LocoUrgent"
    }
    }
    +MetaProp "RunnySwordsman" "KpFighter"
    
    
    +Receptron "RunnySwordsman" "MetaStim"
    {
        Min None
        Max None
    
    
        Effect "Abort"
    }
    
    
    CreateArch "KPFighter" "NoInvestigation"
    {
    +ObjProp "AI_InvKnd"
    {
        "" "Normal"
    }
    }
    
    
    CreateArch "KeeperTree" "KeeperCosh"
    
    
    CreateArch "KeeperCosh" "KeeperCoshEffect"
    
    
    
    
    +Receptron "KeeperCoshEffect" "Knockout"
    {
        Min 0
        Max None
    
    
        Target Me
        Agent Source
    
    
        Effect "AwareFilter"
        {
            "Abort Unless" "Can't see culprit, Stunned"
        }
    }
    
    
    ++Receptron "KeeperCoshEffect" "Knockout"
    {
        Min 0
        Max None
    
    
        Target Me
        Agent -6671
    
    
        Effect "add_prop"
        {
            "Prop Name" "TimeWarp"
        }
    }
    
    
    ++Receptron "KeeperCoshEffect" "Knockout"
    {
        Min 0
        Max None
    
    
        Target Me
        Agent -6672
    
    
        Effect "add_metaprop"
    }
    
    
    ++Receptron "KeeperCoshEffect" "Knockout"
    {
        Min 0
        Max None
    
    
        Effect "Abort"
    }
    
    
    
    
    CreateArch "KeeperCosh" "TimeWarpStore"
    {
    
    
    +ObjProp "TimeWarp"
    {
        "" 2.00
    }
    }
    
    
    CreateArch "KeeperCosh" "RemoveTimeWarp"
    {
    +ObjProp "AI_AlertCap"
    {
        "Max level" "(2) Moderate"
        "Min level" "(1) Low"
        "Min relax after peak" "(1) Low"
    }
    }
    
    
    +Receptron "RemoveTimeWarp" "CoshEffectStim"
    {
        Min 50
        Max 52
    
    
        Target Me
    
    
        Effect "rem_prop"
        {
            "Prop Name" "TimeWarp"
        }
    }
    
    
    ++Receptron "RemoveTimeWarp" "CoshEffectStim"
    {
        Min 50
        Max 52
    
    
        Target Me
        Agent -6672
    
    
        Effect "rem_metaprop"
    }
    
    
    ++StimSource "RemoveTimeWarp" "CoshEffectStim"
    {
        Intensity 1
    
    
        Propagator "Radius"
        {
            Life
            {
                "Flags" "[None]"
                "Period" 15000
                "Max Firings" 2
                "Intensity Slope" 50.00
            }
    
    
            Shape
            {
                "Radius" 1.00
                "Flags" "[None]"
                "Dispersion" "None"
            }
        }
    }
    
    
    CreateArch "KeeperTree" "SwitchableLights"
    
    
    CreateArch  "SwitchableLights" "SourceScaleStore"
    {
    +ObjProp "arSrcScale"
    {
        "" 0.00
    }
    }
    
    
    CreateArch  "SwitchableLights" "KpTorchEffect"
    
    
    +Receptron "KpTorchEffect" "FireStim"
    {
        Min 0
        Max None
    
    
        Target Me
    
    
        Effect "rem_prop"
        {
            "Prop Name" "arSrcScale"
        }
    }
    
    
    ++Receptron "KpTorchEffect" "WaterStim"
    {
        Min 0
        Max None
    
    
        Target Me
        Agent -6729
    
    
        Effect "add_prop"
        {
            "Prop Name" "arSrcScale"
        }
    }
    
    
    
    
    //KeeperCorpse
    
    
    
    
    CreateArch  "ThiefMale" "SwanSongKeeper"
    {
    +ObjProp "Position"
    {
        "Location" 0.00, 0.00, 0.00
        "Heading" 0
        "Pitch" 0
        "Bank" 0
    }
    
    
    // Creature->Creature Type
    +ObjProp "Creature"
    {
        "Type" "Humanoid"
    }
    
    
    // Creature->Current Pose
    +ObjProp "CretPose"
    {
        "Type" "Tags"
        "Motion" "Crumple 0, Die 0"
        "Frac" 0.00
        "Model scale" 1.00
        "Ballistic" TRUE
    }
    
    
    // Renderer->Mesh Textures
    +ObjProp "MeshTex"
    {
        "texture in model" "Thiefs01.gif"
        "replace with" "keeper.pcx"
        "texture in model"[1] ""
        "replace with"[1] ""
        "texture in model"[2] ""
        "replace with"[2] ""
        "texture in model"[3] ""
        "replace with"[3] ""
        "texture in model"[4] ""
        "replace with"[4] ""
        "texture in model"[5] ""
        "replace with"[5] ""
        "texture in model"[6] ""
        "replace with"[6] ""
        "texture in model"[7] ""
        "replace with"[7] ""
        "texture in model"[8] ""
        "replace with"[8] ""
        "texture in model"[9] ""
        "replace with"[9] ""
        "texture in model"[10] ""
        "replace with"[10] ""
        "texture in model"[11] ""
        "replace with"[11] ""
    }
    }
    
    
    +StimSource "SwanSongKeeper" "WeaponStim"
    {
        Intensity 50
    
    
        Propagator "Radius"
        {
            Life
            {
                "Flags" "[None]"
                "Period" 0
                "Max Firings" 1
                "Intensity Slope" 0.00
            }
    
    
            Shape
            {
                "Radius" 1.00
                "Flags" "Line of Sight (raycast)"
                "Dispersion" "Inverse Quadratic"
            }
        }
    }
    
    
    
    
    //Bow
    
    
    CreateArch  "Weapon" "Bow"
    {
    
    
    +ObjProp "ModelName"
    {
        "" "bow2"
    }
    
    
    // Scripts
    +ObjProp "Scripts"
    {
        "Script 0" "TweqOnOff"
        "Script 1" ""
        "Script 2" ""
        "Script 3" ""
        "Don't Inherit" FALSE
    }
    
    
    // Tweq->Delete
    +ObjProp "CfgTweqDelete"
    {
        "Halt" "Destroy Obj"
        "AnimC" "[None]"
        "MiscC" "[None]"
        "CurveC" "[None]"
        "Rate" 0
    }
    
    
    // Tweq->DeleteState
    +ObjProp "StTweqDelete"
    {
        "AnimS" "[None]"
        "MiscS" "[None]"
        "Cur Time" 0
        "Frame #" 0
    }
    
    
    // Renderer->Has Refs
    +ObjProp "HasRefs"
    {
        "" FALSE
    }
    
    
    // Renderer->Transparency (alpha)
    +ObjProp "RenderAlpha"
    {
        "" 0.10
    }
    }
    +MetaProp "Bow" "BowVis"
    
    
    
    
    
    
    
    
    
    
    //NewKeeper
    
    
    CreateArch  "Human" "NewKeeper"
    {
    +ObjProp "ModelName"
    {
        "" "ThiefM01"
    }
    
    
    // Position
    +ObjProp "Position"
    {
        "Location" 0.00, 0.00, 0.00
        "Heading" 0
        "Pitch" 0
        "Bank" 0
    }
    
    
    // Renderer->Extra Light
    +ObjProp "ExtraLight"
    {
        "Amount (-1..1)" 1.00
        "Additive?" TRUE
    }
    
    
    // Scripts
    +ObjProp "Scripts"
    {
        "Script 0" "TrigSlain"
        "Script 1" "Phantom"
        "Script 2" ""
        "Script 3" ""
        "Don't Inherit" FALSE
    }
    
    
    // Game->Damage Model->Hit Points
    +ObjProp "HitPoints"
    {
        "" 20
    }
    
    
    // Game->Damage Model->Max Hit Points
    +ObjProp "MAX_HP"
    {
        "" 20
    }
    
    
    // Inventory->Render Type
    +ObjProp "InvRendType"
    {
        "Type" "Alternate Bitmap"
        "Resource" "Cthfm02"
    }
    
    
    // Engine Features->Inherit Contains
    +ObjProp "ContainInherit"
    {
        "" TRUE
    }
    
    
    // Motions->ActorTagList
    +ObjProp "MotActorTagList"
    {
        "tags" "WithSword 0"
    }
    
    
    // Creature->Time Warp
    +ObjProp "TimeWarp"
    {
        "" 0.75
    }
    
    
    // AI->AI Core->AI
    +ObjProp "AI"
    {
        "Behavior set" "Human with sword"
    }
    
    
    // AI->AI Core->Alertness cap
    +ObjProp "AI_AlertCap"
    {
        "Max level" "(3) High"
        "Min level" "(1) Low"
        "Min relax after peak" "(1) Low"
    }
    
    
    // AI->AI Core->Vision description
    +ObjProp "AI_VisDesc"
    {
        "Z Offset" 3.00
        "Cone 1: Flags" "Active, No alert 0, No alert 1, Night vision"
        "Cone 1: Angle" 170
        "Cone 1: Z angle" 170
        "Cone 1: Range" 5
        "Cone 1: Acuity" 1500
        "Cone 2: Flags" "Active, No alert 2, No alert 3, Night vision"
        "Cone 2: Angle" 80
        "Cone 2: Z angle" 170
        "Cone 2: Range" 5
        "Cone 2: Acuity" 1500
        "Cone 3: Flags" "Active, No alert 2, No alert 3"
        "Cone 3: Angle" 170
        "Cone 3: Z angle" 170
        "Cone 3: Range" 5
        "Cone 3: Acuity" 1500
        "Cone 4: Flags" "Active"
        "Cone 4: Angle" 90
        "Cone 4: Z angle" 170
        "Cone 4: Range" 15
        "Cone 4: Acuity" 200
        "Cone 5: Flags" "Active, No alert 0, No alert 1, Omni"
        "Cone 5: Angle" 320
        "Cone 5: Z angle" 140
        "Cone 5: Range" 12
        "Cone 5: Acuity" 70
        "Cone 6: Flags" "Active"
        "Cone 6: Angle" 120
        "Cone 6: Z angle" 140
        "Cone 6: Range" 33
        "Cone 6: Acuity" 160
        "Cone 7: Flags" "Active"
        "Cone 7: Angle" 150
        "Cone 7: Z angle" 120
        "Cone 7: Range" 45
        "Cone 7: Acuity" 80
        "Cone 8: Flags" "Active, Peripheral"
        "Cone 8: Angle" 230
        "Cone 8: Z angle" 120
        "Cone 8: Range" 80
        "Cone 8: Acuity" 60
        "Cone 9: Flags" "Active, Peripheral"
        "Cone 9: Angle" 230
        "Cone 9: Z angle" 160
        "Cone 9: Range" 100
        "Cone 9: Acuity" 40
        "Cone 10: Flags" "[None]"
        "Cone 10: Angle" 0
        "Cone 10: Z angle" 0
        "Cone 10: Range" 0
        "Cone 10: Acuity" 0
    }
    
    
    // AI->Attributes->Vision
    +ObjProp "AI_Vision"
    {
        "" "Well Above Average"
    }
    
    
    // AI->Attributes->Hearing
    +ObjProp "AI_Hearing"
    {
        "" "Well Above Average"
    }
    
    
    // AI->Attributes->Aggression
    +ObjProp "AI_Aggression"
    {
        "" "Well Below Average"
    }
    
    
    // AI->Attributes->Dodginess
    +ObjProp "AI_Dodginess"
    {
        "" "Well Above Average"
    }
    
    
    // AI->Attributes->Verbosity
    +ObjProp "AI_Verbosity"
    {
        "" "Null"
    }
    
    
    // AI->Attributes->Defensive
    +ObjProp "AI_Defensive"
    {
        "" "Well Above Average"
    }
    
    
    // AI->Attributes->Aptitude
    +ObjProp "AI_Aptitude"
    {
        "" "Well Above Average"
    }
    
    
    // AI->Ranged Combat->Ranged Combat
    +ObjProp "AIRCProp"
    {
        "Minimum Distance" 10
        "Ideal Distance" 40
        "Firing Delay" 0.00
        "Cover Desire" "Very High"
        "Decay Speed" 0.40
        "Fire While Moving" "Often"
        "Contain Projectile" TRUE
    }
    
    
    // AI->Ranged Combat->Ranged Combat Wound Motion
    +ObjProp "AIRCWound"
    {
        "Wound Threshold" 1
        "Severe Threshold" 10
        "Response Chance (%)" 25
    }
    
    
    // AI->Ranged Combat->Ranged Combat Applicabilities
    +ObjProp "AI_RngApps"
    {
        "Idle" "None"
        "Close" "Low"
        "Backup" "Normal"
        "Wound" "Normal"
        "Vantage" "VeryHigh"
        "Left" "High"
        "Right" "High"
    }
    
    
    // AI->Ranged Combat->Ranged Combat Shoot
    +ObjProp "AI_RngShoot"
    {
        "Very Short" "Minimum"
        "Short" "Low"
        "Ideal" "Normal"
        "Long" "Normal"
        "Very Long" "Low"
        "Confirm Range" FALSE
        "Confirm LOF" TRUE
        "Rotation Speed" f000
        "Launch Offset" 0.00, 0.00, 0.00
    }
    
    
    // AI->Ability Settings->Flee: Condition for flee
    +ObjProp "AI_FleeConds"
    {
        "Condition" "Never"
        "Pct Hitpoints" 0
        "Not if # of friends >=" 0
    }
    
    
    // AI->Utility->Watch: Watch link defaults
    +ObjProp "AI_WtchPnt"
    {
        "Watch kind" "Self entry"
        "Priority" "High"
        "Trigger: Radius" 5
        "         Height" 5
        "         Required awareness" "(0) None"
        "         Line requirement" "None"
        "         Minimum alertness" "(0) None"
        "         Maximum alertness" "(3) High"
        "Exit: Link kill option" "Don't kill"
        "      Kill like links" FALSE
        "      No test once triggered" FALSE
        "      Reuse delay" 30000
        "      Reset delay" 30000
        "Response: Step 1" "Signal(Signal,Target(s),Max Distance)"
        "   Argument 1" "hide"
        "   Argument 2" "self"
        "   Argument 3" ""
        "Response: Step 2" "Nothing()"
        "   Argument 1"[1] ""
        "   Argument 2"[1] ""
        "   Argument 3"[1] ""
        "Response: Step 3" "Nothing()"
        "   Argument 1"[2] ""
        "   Argument 2"[2] ""
        "   Argument 3"[2] ""
        "Response: Step 4" "Nothing()"
        "   Argument 1"[3] ""
        "   Argument 2"[3] ""
        "   Argument 3"[3] ""
        "Response: Step 5" "Nothing()"
        "   Argument 1"[4] ""
        "   Argument 2"[4] ""
        "   Argument 3"[4] ""
        "Response: Step 6" "Nothing()"
        "   Argument 1"[5] ""
        "   Argument 2"[5] ""
        "   Argument 3"[5] ""
        "Response: Step 7" "Nothing()"
        "   Argument 1"[6] ""
        "   Argument 2"[6] ""
        "   Argument 3"[6] ""
        "Response: Step 8" "Nothing()"
        "   Argument 1"[7] ""
        "   Argument 2"[7] ""
        "   Argument 3"[7] ""
        "Response: Step 9" "Nothing()"
        "   Argument 1"[8] ""
        "   Argument 2"[8] ""
        "   Argument 3"[8] ""
        "Response: Step 10" "Nothing()"
        "   Argument 1"[9] ""
        "   Argument 2"[9] ""
        "   Argument 3"[9] ""
        "Response: Step 11" "Nothing()"
        "   Argument 1"[10] ""
        "   Argument 2"[10] ""
        "   Argument 3"[10] ""
        "Response: Step 12" "Nothing()"
        "   Argument 1"[11] ""
        "   Argument 2"[11] ""
        "   Argument 3"[11] ""
        "Response: Step 13" "Nothing()"
        "   Argument 1"[12] ""
        "   Argument 2"[12] ""
        "   Argument 3"[12] ""
        "Response: Step 14" "Nothing()"
        "   Argument 1"[13] ""
        "   Argument 2"[13] ""
        "   Argument 3"[13] ""
        "Response: Step 15" "Nothing()"
        "   Argument 1"[14] ""
        "   Argument 2"[14] ""
        "   Argument 3"[14] ""
        "Response: Step 16" "Nothing()"
        "   Argument 1"[15] ""
        "   Argument 2"[15] ""
        "   Argument 3"[15] ""
    }
    
    
    // AI->AI Core->Broadcast customization
    +ObjProp "AI_BcstSet"
    {
        "Broadcasts disabled" FALSE
        "Custom 1: Broadcast" "Alert zero broadcast"
        "               Type" "No broadcast"
        "               Custom concept" ""
        "               Additional tags" ""
        "Custom 2: Broadcast" "Alert one broadcast"
        "               Type"[1] "No broadcast"
        "               Custom concept"[1] ""
        "               Additional tags"[1] ""
        "Custom 3: Broadcast" "Alert two broadcast"
        "               Type"[2] "No broadcast"
        "               Custom concept"[2] ""
        "               Additional tags"[2] ""
        "Custom 4: Broadcast" "Alert to one"
        "               Type"[3] "No broadcast"
        "               Custom concept"[3] ""
        "               Additional tags"[3] ""
        "Custom 5: Broadcast" "Alert to two"
        "               Type"[4] "No broadcast"
        "               Custom concept"[4] ""
        "               Additional tags"[4] ""
        "Custom 6: Broadcast" "Spot player"
        "               Type"[5] "No broadcast"
        "               Custom concept"[5] ""
        "               Additional tags"[5] ""
        "Custom 7: Broadcast" "Find Friend"
        "               Type"[6] "No broadcast"
        "               Custom concept"[6] ""
        "               Additional tags"[6] ""
        "Custom 8: Broadcast" "Shoot"
        "               Type"[7] "No broadcast"
        "               Custom concept"[7] ""
        "               Additional tags"[7] ""
    }
    
    
    // Creature->Creature Type
    +ObjProp "Creature"
    {
        "Type" "Humanoid"
    }
    
    
    // Speech->Voice
    +ObjProp "SpchVoice"
    {
        "" ""
    }
    
    
    // Renderer->Transparency (alpha)
    +ObjProp "RenderAlpha"
    {
        "" 0.10
    }
    
    
    // Renderer->Mesh Textures
    +ObjProp "MeshTex"
    {
        "texture in model" "Thiefs01.gif"
        "replace with" "keeper.pcx"
        "texture in model"[1] ""
        "replace with"[1] ""
        "texture in model"[2] ""
        "replace with"[2] ""
        "texture in model"[3] ""
        "replace with"[3] ""
        "texture in model"[4] ""
        "replace with"[4] ""
        "texture in model"[5] ""
        "replace with"[5] ""
        "texture in model"[6] ""
        "replace with"[6] ""
        "texture in model"[7] ""
        "replace with"[7] ""
        "texture in model"[8] ""
        "replace with"[8] ""
        "texture in model"[9] ""
        "replace with"[9] ""
        "texture in model"[10] ""
        "replace with"[10] ""
        "texture in model"[11] ""
        "replace with"[11] ""
    }
    }
    
    
    +MetaProp "NewKeeper" "KpVisCtrl"
    
    
    ++MetaProp "NewKeeper" "KeeperCoshEffect"
    
    
    +Link "NewKeeper" "broadhead" "Contains"
    {
        "" "Generic Contents"
    }
    
    
    ++Link "NewKeeper" "Bow" "Contains"
    {
        "" "Hand"
    }
    
    
    ++Link "NewKeeper" "SwanSongKeeper" "Corpse"
    {
    }
    
    
    ++Link "NewKeeper" "Sword" "Weapon"
    {
    }
    
    
    ++Link "NewKeeper" "broadhead" "AIProjectile"
    {
        "Constraint Type" "None"
        "Constraint Data" 0
        "Targeting Method" "Straight-Line"
        "Selection Desire" "Very High"
        "Firing Delay" 0.00
        "Ammo" 0
        "Burst Count" 0
        "Accuracy" "Very High"
        "Leads Target" TRUE
        "Launch Joint" "Left Wrist"
    }
    
    
    ++Link "NewKeeper" "Bow" "CreatureAttachment"
    {
        "Joint" "Left Fingers"
        "Rot Mode" "Default"
    }
    
    
    ++Receptron "NewKeeper" "LightBright"
    {
        Min 0
        Max 19
    
    
        Target Me
        Agent -6847
    
    
        Effect "rem_metaprop"
    }
    
    
    ++Receptron "NewKeeper" "LightBright"
    {
        Min 0
        Max 19
    
    
        Target Me
        Agent -6848
    
    
        Effect "rem_metaprop"
    }
    
    
    ++Receptron "NewKeeper" "LightBright"
    {
        Min 30
        Max None
    
    
        Target Me
        Agent Me
    
    
        Effect "stimulate"
        {
            "Stimulus" "MetaStim"
            "Multiply By" 0.00
            "Then Add" 1.00
        }
    }
    
    
    ++Receptron "NewKeeper" "GarrettStim"
    {
        Min 101
        Max 150
    
    
        Target Me
        Agent -6642
    
    
        Effect "add_metaprop"
    }
    
    
    ++Receptron "NewKeeper" "MetaStim"
    {
        Min 0
        Max 2
    
    
        Target Me
        Agent -6848
    
    
        Effect "add_metaprop"
    }
    
    
    ++StimSource "NewKeeper" "GarrettStim"
    {
        Intensity 100
    
    
        Propagator "Radius"
        {
            Life
            {
                "Flags" "No Max Firings"
                "Period" 500
                "Max Firings" 1
                "Intensity Slope" 0.00
            }
    
    
            Shape
            {
                "Radius" 25.00
                "Flags" "[None]"
                "Dispersion" "Linear"
            }
        }
    }
    
    
    //Garrett
    
    
    ++Receptron "Garrett" "GarrettStim"
    {
        Min 0
        Max None
    
    
        Target Source
        Agent Me
    
    
        Effect "stimulate"
        {
            "Stimulus" "GarrettStim"
            "Multiply By" 1.00
            "Then Add" 100.00
        }
    }
    
    
    ++Receptron "Garrett" "FrobStim"
    {
        Min 0
        Max None
    
    
        Target Source
        Agent Me
    
    
        Effect "stimulate"
        {
            "Stimulus" "FrobStim"
            "Multiply By" 1.00
            "Then Add" 100.00
        }
    }

  7. #7
    Member
    Registered: Jan 2006
    Location: On the tip of your tongue.
    Thanks for this! That's a lot of data.

    Yeah, looks like all the receptrons are broken - I already have a heavily modified gamesys so most of the object IDs from Equilibrium are random schema sounds and suchlike in my own. Going through and correcting the IDs now.

  8. #8
    Dˇttirin klŠ­ist oft mˇ­ur m÷ttli
    Registered: Apr 2015
    Do mean, that you already have some of the Equillibrium archetype names in your gam? Like "NewKeeper" (example)?
    I this case the entry can't be created. It's already there. Monolog will show an error when you load the dml. But the entry can be changed if the CreateArch tag will be deleted.
    Every objprop has to have a "NewKeeper" tag first then. I can do that in a couple of seconds, for you it's a hassle.
    In this case, upload the gam, I load the dml and send it back.



    .

  9. #9
    Member
    Registered: Jan 2006
    Location: On the tip of your tongue.
    No, but all the object IDs used by Equilibrium are already in use in my gamesys - e.g. in Equilibrium, KpBowMan is ID -6642. In my gamesys, ID -6642 is a random door sound effect. The receptrons point to the ID, not the object name.

  10. #10
    Dˇttirin klŠ­ist oft mˇ­ur m÷ttli
    Registered: Apr 2015
    Okay. In this case replace the "Unknown" receptron with "KpBowMan" but not with the ID. DromEd will add the new ID.

  11. #11
    Member
    Registered: Jan 2006
    Location: On the tip of your tongue.
    Goodness, this was waaay simpler than I thought. I think looking at Equilibrium in the first place was a mistake, as there's so much additional stuff in there for the Keeper Agent's behaviour that is not required for what I need.

    For my purposes, I just want normal guards that can switch weapons. A simple proximity switch has done the trick. Here's the setup in the simplest possible form:

    1. Create a single new Stim - GarrettProxStim

    2. Create two new Metaproperties:

    MultiWeaponBow
    - AI > AI Core > AI: Human with bow
    - Ranged Combat > Ranged Combat (Minimum Distance: 10 / Ideal Distance: 40 / Firing Delay: 1.15 / Cover Desire: High / Decay Speed: 0.01 / Fire While Moving: Never)
    - Creature > Time Warp: 0.85
    - Motions > ActorTagList: WithBow 0
    - Shape > Model Name: (AI model with a bow)

    MultiWeaponSword
    - AI > AI Core > AI: Human with sword
    - Ability Settings > HtoHCombat: Distances: X: 3.75 / Y: 6.00 / 10.00
    - Motions > ActorTagList: WithSword 0
    - Model Name: (AI model with a sword)

    3. Create a new archetype NewGuard under Animal > Human:
    - Speech > Voice: vguardmen
    - Metaproperty: MultiWeaponSword
    - Receptrons:
    - 1. Stimulus: GarrettProxStim / Min Intensity: No Min / Max Intensity: 20 / Effect: Add MetaProperty / Target Object: Me / Agent Object: MultiWeaponBow
    - 2. Stimulus: GarrettProxStim / Min Intensity: No Min / Max Intensity: 20 / Effect: Remove MetaProperty / Target Object: Me / Agent Object: MultiWeaponSword
    - 3. Stimulus: GarrettProxStim / Min Intensity: 21 / Max Intensity: No Max / Effect: Add MetaProperty / Target Object: Me / Agent Object: MultiWeaponSword
    - 4. Stimulus: GarrettProxStim / Min Intensity: 21 / Max Intensity: No Max / Effect: Remove MetaProperty / Target Object: Me / Agent Object: MultiWeaponBow

    4. Edit the Garrett archetype.
    - Add Act/React Source:
    - 1. Stimulus: GarrettProxStim / Propagator: Radius / Intensity: 100 / Shape Data: (Radius: 30 / Flags: None / Dispersion: Linear) / Life Cycle: (Flags: No Max Firings / Period: 500 / Max Firings: 0 / Intensity Slope: 0)

    How it works:

    * Garrett gives off a GarrettProxStim with a linear falloff every half second.
    * Guards react to the GarrettProxStim based on the falloff (tweak the numbers if you're not happy with the distance).
    * If the guard receives less than 20 of the Stim (i.e. Garrett is far away), he'll add the Bow behaviour metaproperty to himself and remove the Sword behaviour metaproperty.
    * If it's more than 20 (i.e. Garrett is nearby), he does the inverse - adds the Sword behaviour metaproperty and removes the Bow behaviour metaproperty.

  12. #12
    Member
    Registered: Jan 2006
    Location: On the tip of your tongue.
    Bit of work with Detailattachement links and the end result is pretty cool:


  13. #13
    Desperately Dodgy Moderator
    Registered: Nov 2001
    Location: Dragonsreach
    That's awesome! Nice work both of you.

  14. #14
    Member
    Registered: Oct 2004
    Location: Ireland/Poland
    Looks pretty cool - like a very core feature of the combat system. It's really great, that you managed to do it with such a simple setup.

    I wonder if it's technically possible to play animations before and after the state changes, to draw and put back the bow and swords respectively. The flipping is not that apparent (especially, when you runaway facing backwards), but still, it would be a nice touch.

  15. #15
    Desperately Dodgy Moderator
    Registered: Nov 2001
    Location: Dragonsreach
    I agree, as long as the animations are very quick and don't slow down or interfere with the guard's pursuit of the player.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •