Jump to content

Scripting - Dead Money


Convulsion

Recommended Posts

Hi, so I've been playing a while through the new DLC called 'Dead Money', I'm sure you've heard about it by now.

So I'd like to first off say;

 

Those of you who do not want any kind of spoilers that may or may not appear here, please do NOT read any further.

 

 

 

So most of you who has played the new DLC would know that when you "kill" a "Ghost", they get back up.

I would like to get some information regarding this and a couple of more things.

 

Would you like to get infected by whatever the toxic clouds have spread that made the ghost people?

Well I for one would like that very much, would be a fun thrill/gamble ingame for the player to have if you ask me.

 

Here is a scenario:

Lets say you are now currently infected with "what'sitcallednow" and have bonded well with it and didn't die from getting infected..

and you happen to be in a fight with something or a bunch of somethings (nestled words lol.)

You would now have the fun of fighting and the thrill of NOT dying a direct death on the count of missing to watch your HP bar for a second. (or just for the heck of it, I mean gambling is fun)

Unless you happen to be disintergrated or dismembered.

 

So now you know what I want to achieve with this.

But is it possible?

 

There are so much things that could be a bother.

Lets say you "die" without getting either dismembered/disintergrated

 

What would happen to your quests? (atleast I think that may be an issue, but then again thats why I'm asking)

Would the game assume you're dead and therefore rendering your quests unsuccessful? (and not be able to finish them)

 

Would any of your perks 'turn off'?

 

There is probably a lot more of issues that I will surely forget to mention, but cut to the chase now.

 

Is it possible to make this happen, and what could be a problem with this? (besides being a semi-cheat type of game mod.)

Here is the actual script from 'Dead Money' that makes the ghosts get up again after "dying", unaltered. (All the rights to respective owners)

 

Scn NVDLC01GhostSCRIPT

 

; - Jorge & Rob

 

Short bFlagOn

Short bChallenge

Short bWorship

Short bBarked

Int nDeadState ; 0 = Alive, 1 = Dead, 2 = Semi-Dead

Float fRandom

Float fRandomBark

 

ref ActivatingActor

 

Begin OnLoad

 

if (player.HasPerk NVDLC01GhostHunter)

; do nothing so ghosts can be killed without dismemberment

elseif (nDeadState != 1)

SetActorRefEssential 1; ; We set the Essential flag because setting it in the NPC's entity (Actor Window) will have permanent effect.

endif

 

End

 

Begin OnDeath

 

PlaySound3D NPCGhostRealDeath;

SetActorRefEssential 0;

Set nDeadState to 1;

 

End

; <<<<----------------

 

; >>>>----------------

Begin OnHit NVDLC01FightingStarlet

 

SetActorRefEssential 0;

CIOS LaserDisintegrationFXSpell;

KillActor NVDLC01FightingStarlet 1

Set nDeadState to 1;

 

End

; <<<<----------------

 

; >>>>----------------

Begin OnHit

 

; JSH 11.29.10 - Added check to make sure Ghost Person doesn't reset aggression each time he's hit.

if (GetAV Aggression < 1)

SetAV Aggression 1 ; 11.12.10 JF - Whenever a ghost person is hit, they get pissed.

SetAV Assistance 2 ; This is used when a ghost person is currently worshipping a hologram.

endif

 

If (nDeadState == 2)

If (Player.GetWeaponAnimType < 4) ; If Player is using a Melee, or Unarmed weapon.

Set nDeadState to 1; ; Set the Ghost dude to "Dead 4 Realz" state.

If (IsLimbGone 0 10 != 1) ; If the Ghost dude has limbs intact.

Set fRandom to GetRandomPercent; ; We call a random number, and then dismember a limb according to the result.

If (fRandom < 10) ; The purpose of this is to make it easier for players using Melee/Unarmed to dismember downed Ghost People.

KillActor Player 1;

Elseif (fRandom < 25)

KillActor Player 1;

Elseif (fRandom < 40)

KillActor Player 1;

Elseif (fRandom < 55)

KillActor Player 5;

Elseif (fRandom < 70)

KillActor Player 3;

Elseif (fRandom < 85)

KillActor Player 10;

Else

KillActor Player 7;

Endif

Endif

Endif

Endif

 

If (nDeadState == 1)

SetActorRefEssential 0;

endif

 

If (GetDead == 0) && (nDeadState != 1) && (player.HasPerk NVDLC01GhostHunter) ; Added nDeadState check and Ghost Hunter perk to ensure the OnLoad block doesn't reset the ghost person to alive when they're supposed to be dead.

SetActorRefEssential 0;

endif

End

; <<<<----------------

 

; 11.12.10 JF - Added to allow Dog's script to change a var in this script

 

begin onActivate

 

set ActivatingActor to GetActionREF

 

; When Dog starts devouring a ghost person, we use this block to set nDeadState so the chewed up ghost person doesn't come back to life

if ActivatingActor.GetIsReference NVDLC01DogREF

set nDeadState to 1

else

Activate

endif

 

end

 

 

; >>>>----------------

Begin GameMode

 

if (GetDisabled == 0) ;Adding this check in here to make sure that when Ghost People are disabled the extra scripts below checking AV's don't fire since those AV's are cleared out on disabling, causing them to be killed and kill cams to occasionally fire. (CES 12/8/10)

 

If (nDeadState == 1)

If (bChallenge == 1)

Return;

Else

If (GetIsID NVDLC01CrGhostTrapper) || (GetIsID NVDLC01CrGhostTrapperET) || (GetIsID NVDLC01CrGhostTrapperETDG) || (GetIsID NVDLC01CrGhostTrapperETSpecial) || (GetIsID NVDLC01CrGhostTrapperLob) || (GetIsID NVDLC01CrGhostTrapperVilla)

IncrementScriptedChallenge NVDLC01ChallengeGhostEaterTrapper;

ElseIf (GetIsID NVDLC01CrGhostSeeker) || (GetIsID NVDLC01CrGhostSeekerET) || (GetIsID NVDLC01CrGhostSeekerETDG) || (GetIsID NVDLC01CrGhostSeekerLob) || (GetIsID NVDLC01CrGhostSeekerWT) || (GetIsID NVDLC01CrGhostSeekerWTNorth) || (GetIsID NVDLC01CrGhostSeekerWTSouth)

IncrementScriptedChallenge NVDLC01ChallengeGhostEaterSeeker;

ElseIf (GetIsID NVDLC01CrGhostHarvester) || (GetIsID NVDLC01CrGhostHarvesterET) || (GetIsID NVDLC01CrGhostHarvesterETDogEat) || (GetIsID NVDLC01CrGhostHarvesterLob) || (GetIsID NVDLC01CrGhostHarvesterVilla) || (GetIsID NVDLC01CrGhostHarvesterVilla02) || (GetIsID NVDLC01CrGhostHarvesterWT) || (GetIsID NVDLC01CrGhostHarvesterWTGala01) || (GetIsID NVDLC01CrGhostHarvesterWTSouth)

IncrementScriptedChallenge NVDLC01ChallengeGhostEaterHarvester;

Endif

SetActorRefEssential 0;

Set bChallenge to 1;

Return;

Endif

Else

If (GetStageDone NVDLC01MQ01 5 && NVDLC01SlideBoxRef.bEndingDone == 0)

If (bFlagOn == 0)

SetActorRefEssential 1; ; We set the Essential flag because setting it in the NPC's entity (Actor Window) will have permanent effect.

Set bFlagOn to 1; ; The new function that toggles Essential flag on/off is meant to be used only in scripts - it cannot fully alter an NPC flagged as Essential in its Actor Window checkbox.

Return;

Else

If (nDeadState != 1)

If (IsActorRefEssential) && (Player.HasPerk NVDLC01GhostHunter) ; Safety fall-through to set the ghost not essential if the player has the Ghost Hunter perk and the ghost isn't currently essential

SetActorRefEssential 0;

Return;

Elseif (IsInCriticalStage GooStart) || (IsInCriticalStage GooEnd) || (IsInCriticalStage DisintegrateStart) || (IsInCriticalStage DisintegrateEnd) ; If the ghost is getting critically zapped by an energy weapon

SetActorRefEssential 0; ; We strip the Ghost dude of its essential flag.

Set nDeadState to 1;

KillActor Player;

Return;

Elseif (GetAV PerceptionCondition <= 0) ; And then we check the condition of its limbs. If any of these is below 0, then we explode it, and kill the fella outright.

SetActorRefEssential 0;

Set nDeadState to 1;

KillActor Player 1;

Return;

Elseif (GetAV RightAttackCondition <= 0)

SetActorRefEssential 0;

Set nDeadState to 1;

KillActor Player 5;

Return;

Elseif (GetAV LeftAttackCondition <= 0)

SetActorRefEssential 0;

Set nDeadState to 1;

KillActor Player 3;

Return;

Elseif (GetAV RightMobilityCondition <= 0)

SetActorRefEssential 0;

Set nDeadState to 1;

KillActor Player 10;

Return;

Elseif (GetAV LeftMobilityCondition <= 0)

SetActorRefEssential 0;

Set nDeadState to 1;

KillActor Player 7;

Return;

Elseif (GetAV EnduranceCondition <= 0)

SetActorRefEssential 0;

Set nDeadState to 1;

KillActor Player 1;

Return;

Elseif (IsLimbGone 0 12 == 1) ; If any of the Ghosts limbs are missing

SetActorRefEssential 0; ; We strip the Ghost dude of its essential flag.

Set nDeadState to 1; ; Set it dead

KillActor Player 1; ; Kill it, rewarding the player xp

Return;

Elseif (IsAnimPlaying == 0 && nDeadState != 2) ; If the Ghost dude is knocked down, this means that we've taken it into Semi-Dead state (equivalent of GetDead == 1, and then resurrecting the actor after a few seconds).

 

Set fRandomBark to GetRandomPercent;

If (fRandomBark <= 33)

;Companion Barks for telling the player to kill the Ghost Person - CES 10/29/10

if ( NVDLC01Followers.bDeanHired == 1 )

NVDLC01DeanREF.SayTo player NVDLC01DeanDialogueGhostDeadBark

elseif ( NVDLC01Followers.bChristineHired == 1 )

NVDLC01ChristineREF.SayTo player NVDLC01ChristineDialogueGhostDeadBark

Endif

Endif

 

PlaySound3D NPCGhostDeath; ; after which they will get up, as if they still were Essential. However, during this time, they can be killed normally (but not looted, until dead).

SetActorValue PerceptionCondition 10; ; Set limb condition to low, so high level ghosts are easier to kill while unconscious

SetActorValue RightAttackCondition 10;

SetActorValue RightMobilityCondition 10;

SetActorValue LeftAttackCondition 10;

SetActorValue LeftMobilityCondition 10;

SetActorRefEssential 0;

Set nDeadState to 2; ; Set the var of state to 2 = Semi-Dead.

Return;

 

Elseif (IsAnimPlaying == 1 && GetKnockedState == 0 && nDeadState != 0)

If (Player.HasPerk NVDLC01GhostHunter) ; Player has the Ghost Hunter Perk, so we don't set them essential upon getting back up

PlaySound3D NPCGhostEmergeVox; ; Play get up sound

Set nDeadState to 0; ; The Ghost Dude is now back to normal.

Else

PlaySound3D NPCGhostEmergeVox;

SetActorRefEssential 1; ; If player doesn't have Ghost Hunter, set the Essential flag back to "On."

Set nDeadState to 0;

Endif

Return;

Elseif (nDeadState == 0)

If (IsActorRefEssential != 1)

If (Player.HasPerk NVDLC01GhostHunter != 1)

SetActorRefEssential 1; ; Since the checks above all force a Return; call when they run, we can safely here re-apply the Essential flag

Endif ; otherwise, loading a savegame will reset it to 0 (this flag does not get stored in the savegame data for each ref).

Endif

Endif

Endif

Endif

Endif

Endif

 

Endif

End

; <<<<----------------

; <<<<---------------- Finish Code;

 

 

Could we apply this script to the player without any issues?

or what would the issues be?

 

Let's think of it as a "disease" so that you can get infected and you could get cured

(should be a fun quest, or just by adding it to prolongued inhaling of the Toxic Clouds in Sierra Madre [of course later on in the DLC, if we were to do it early then it would be too easy to play even with the gamble])

 

 

 

Any thoughts, comments, idea or help in any constructive form?

 

[Edit]

We could say that you are infected by a parasite (for several reasons explained)

Feed your parasite before it feeds on you.

 

For balance reasons.

If you get something good, you have to get something bad.

So your good is, you might survive dying.

But the bad is, the parasite you have that gives you this ability has to feed.

and you will have to feed it with something (sometimes) before it feeds on you.

Slowly killing you.

 

So how do you feed?

Cannibalise sounds like the most fun. (it is a human parasite so this is the most logical)

So you have to hunt and eat to satisfy your hunger

to keep your ability, if you don't you get like a "warning" in form of a withdrawal effect (your body is dying without nutrients)

and after a certain ammount of time after you get the warning, your health starts decreasing.

All of which is fixed by hunting and cannibalising.

 

There should also be a cure aswell.

 

Sounds fun enough?

Edited by Convulsion
Link to comment
Share on other sites

  • Recently Browsing   0 members

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