Jump to content

'Essential' Dogmeat


Xokks

Recommended Posts

I'm trying to get my feet a little wet with scripting so I thought a simple enough task would be to make Dogmeat unkillable. He would be able to be knocked down and unconscious for a bit, but would come back to life eventually. Now I thought this would be as simple as ticking the 'Essential' box in the Creature form, but it's already ticked.

 

So what's the deal? Checking on http://geck.bethsoft.com/index.php/Category:Creatures it seems I would have the right idea, but it is possible for Dogmeat to die in Vanilla Fallout3 even though Essential is still checked.

 

Can someone explain this to me?

Link to comment
Share on other sites

I figured it has something to do with the Dogmeat script over riding the essential tick. Unfortunately like I said I'm new to scripting and I'm not exactly sure what does what. Can anyone point me in the right direction? Here's the script found for Dogmeat.

 

scn DogmeatSCRIPT

 

;Follower Variables

short HasBeenHired

short WeaponOut

short CombatStyleRanged

short CombatStyleMelee

short IsFollowingDefault

short IsFollowingShort

short IsFollowingLong

short Waiting

 

;Dogmeat Variables

short Find ;0 = not finding, 1 = searching, 2 = found and should now return

short FindAmmo

short FindChems

short FindWeapons

short FindFood

 

BEGIN OnStartCombat Player

 

set Followers.DogmeatHired to 0

set Followers.DogmeatFired to 1

set DogmeatREF.Waiting to 0

DogmeatREF.SetPlayerTeammate 0

DogmeatREF.RemoveFromFaction FollowerFaction

 

END

 

BEGIN OnCombatEND

 

if ( GetPlayerTeammate == 1 )

resethealth

restoreav perceptioncondition 100

restoreav endurancecondition 100

restoreav leftattackcondition 100

restoreav leftmobilitycondition 100

restoreav rightattackcondition 100

restoreav rightmobilitycondition 100

endif

 

END

 

BEGIN OnDeath

 

if ( Followers.DogmeatHired == 1 || Followers.DogmeatFired == 1 )

set Followers.PlayerHasFollower to 0

set Followers.DogmeatHired to 0

ShowMessage FollowerMessageDeadDogmeat

endif

 

 

END

Link to comment
Share on other sites

You're looking in the wrong place. Quests is where you want to be. Specifically FollowersHireDogmeat. Go to the topics tab and look at the 'TakeDogMeat3' entries, down in the Result Script (Begin) box.

 

Tried doing this and still having no luck. Will this work if I have already hired him? I tried taking him straight from waiting at Vault 101 to a fight and he still died. Then I tried walking a bit away from the Vault and tell Dogmeat to go wait at the Vault, met back up with him and told him to follow me and went into another fight - in which Dogmeat died yet again.

 

Here's a picture of what I've changed:

http://i41.tinypic.com/168y5gp.jpg

 

I took: DogmeatDad2A, TakeDogmeat3A, TakeDogmeat3B and TakeDogmeat3C ...

 

Then I made sure that in each one in the 'Result Script (Begin)' that "setEssential FFEU255Dogmeat" was equal to 1.

 

With all this done Dogmeat still dies when I take him to a fight and let him go until the point of which he would die. He doesn't appear to be unconscious since the "Dogmeat has died" message still pops up and if I wait a few days he never comes back to life or anything.

 

So what am I missing? It feels like I've done everthing I've supposed to, but perhaps I'm just missing some very simple thing a long the way who knows.

 

To be even more thorough I've included the .esp file

here -> http://www.yousendit.com/download/dVlwSlI1Y3lWRDkzZUE9PQ

So anyone can take a look and see if I've made some basic mistake a long the way.

 

Really appreciate any help people can give.

Link to comment
Share on other sites

Can someone at least take a look at my file or something. This seems like it would be so simple to do yet I'm having problems with something along the way. I'm worried it's probably something simple I've just looked over.
Link to comment
Share on other sites

I modified Dogmeat's script to essentially do what you want without keeping him essential:

 

scn DogmeatSCRIPT

 

;Follower Variables

short HasBeenHired

short WeaponOut

short CombatStyleRanged

short CombatStyleMelee

short IsFollowingDefault

short IsFollowingShort

short IsFollowingLong

short Waiting

 

;Dogmeat Variables

short Find ;0 = not finding, 1 = searching, 2 = found and should now return

short FindAmmo

short FindChems

short FindWeapons

short FindFood

 

BEGIN GameMode

if ( DogmeatRef.GetDead == 1 )

DogmeatRef.Resurrect

DogmeatRef.setav health 100

set Followers.PlayerHasFollower to 1

set Followers.DogmeatHired to 1

DogmeatRef.evp

endif

END

 

BEGIN OnStartCombat Player

 

set Followers.DogmeatHired to 0

set Followers.DogmeatFired to 1

set DogmeatREF.Waiting to 0

DogmeatREF.SetPlayerTeammate 0

DogmeatREF.RemoveFromFaction FollowerFaction

 

END

 

BEGIN OnCombatEND

 

if ( GetPlayerTeammate == 1 )

resethealth

restoreav perceptioncondition 100

restoreav endurancecondition 100

restoreav leftattackcondition 100

restoreav leftmobilitycondition 100

restoreav rightattackcondition 100

restoreav rightmobilitycondition 100

endif

 

END

 

;BEGIN OnDeath

 

; if ( Followers.DogmeatHired == 1 || Followers.DogmeatFired == 1 )

; set Followers.PlayerHasFollower to 0

; set Followers.DogmeatHired to 0

; ShowMessage FollowerMessageDeadDogmeat

; endif

 

 

;END

 

He still dies, but he comes back quicker than the Terminator. I took him to Old Olney and told him to find some ammo for me. Two Deathclaws hammered him to death a dozen times. So I took the "Begin OnDeath" section at the end of the script out of play with semicolons so I didn't have to see the "Dogmeat has Died" message repeatedly. If you remove that portion, then it makes it unecessary to have the new portion of the script rehire him every time he dies.

 

Ah, a boy and his dog....

 

Can someone at least take a look at my file or something. This seems like it would be so simple to do yet I'm having problems with something along the way. I'm worried it's probably something simple I've just looked over.
Link to comment
Share on other sites

lol that would certainly be the easiest way. Or just download one of the dogmeat essential mods that does it for you (even if it's just to look and see how they did it).

 

Also, @ badpenney: as I learned from cipcsis, you don't need the = 1 in the GetDead statement :) If dogmeat is dead, it's going to return a 1, no need to specifically check it like that.

Link to comment
Share on other sites

Can you just... prid dogmeat's id and setessential 1 him?.

 

I unfortunately don't know what that is since I'm completely new to scripting.

 

The one script that has Dogmeat resurrect instantly isn't exactly what I had planned for. How do you go about making him fall unconscious for a bit.

 

I wanted him to not be able to die, but didn't just make him invincible since it would ruin combat involving Dogmeat. So I figured if he could get knocked unconscious in the middle of battle it would be a little more balanced.

 

Edit: I just wanted to learn a bit about scripting like this and thought that this Dogmeat idea might be something fairly easy to learn and do. If anyone has another opinion of what direction I should start out in feel free to advise me.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...