drinking screen effects

Post » Sun Nov 07, 2010 10:10 am

i am trying to make beer (for now until i get this right) make the screen more blurry with the more beer you drink. i have a script like cateye that can make the effect go off once but no matter how i type it out i cant get it to change past the first one. i understand beer is a consumable so i am trying to use a global (named drinkingbeer) i made to pull this off by having the beer add 1 to my global then applying the effect i need, ie :

if drinkingbeer == 2        RemoveImageSpaceModifier Drinking2        ApplyImageSpaceModifier Drinking3


no matter what i do, i cant get the global to go higher than 1. can anyone help me with this? am i going about this totally the wrong way?

scn drunkeneffectbegin ScriptEffectStartset drinkingbeer to ++1if drinkingbeer == 5        RemoveImageSpaceModifier Drinking5        ApplyImageSpaceModifier Drinking6endifif drinkingbeer == 4        RemoveImageSpaceModifier Drinking4        ApplyImageSpaceModifier Drinking5endifif drinkingbeer == 3        RemoveImageSpaceModifier Drinking3        ApplyImageSpaceModifier Drinking4endifif drinkingbeer == 2        RemoveImageSpaceModifier Drinking2        ApplyImageSpaceModifier Drinking3endifif drinkingbeer == 1        RemoveImageSpaceModifier Drinking1        ApplyImageSpaceModifier Drinking2endifif drinkingbeer == 0        ApplyImageSpaceModifier Drinking1endifendbegin ScriptEffectFinish        RemoveImageSpaceModifier Drinking1        RemoveImageSpaceModifier Drinking2        RemoveImageSpaceModifier Drinking3        RemoveImageSpaceModifier Drinking4        RemoveImageSpaceModifier Drinking5        RemoveImageSpaceModifier Drinking6        set drinkingbeer to 0end

User avatar
:)Colleenn
 
Posts: 3461
Joined: Thu Aug 31, 2006 9:03 am

Post » Sun Nov 07, 2010 11:16 am

Looks like this is messing things up

begin ScriptEffectStartset drinkingbeer to ++1


Should be

begin ScriptEffectStartset drinkingbeer to drinkingbeer + 1


BTW is this inspired by Guild Wars?
User avatar
claire ley
 
Posts: 3454
Joined: Fri Aug 04, 2006 7:48 pm

Post » Mon Nov 08, 2010 12:33 am

its a request, someone is making me some graphics for my perk mod and he need this for his brewery mod

I ran it as you said and it never gets past 1. if i getglobalvalue drinkingbeer in game, it reads 0 then after drinking any amount of beers it says 1 thus only triggers effect 1. there must be something minor that i am (not) doing that is preventing it from writing it directly to drinkingbeer past 1

also if i run after removing the set drinkingbeer to drinkingbeer + 1

if drinkingbeer == 2        RemoveImageSpaceModifier Drinking2        ApplyImageSpaceModifier Drinking3        set drinkingbeer to 3endif


nothing happens. this is pretty much baffling my mind
User avatar
Ashley Hill
 
Posts: 3516
Joined: Tue Jul 04, 2006 5:27 am

Post » Sun Nov 07, 2010 8:23 pm

What is most likely happening is that you drink the first beer and the global is set to 1. Which BTW makes this line useless

if drinkingbeer == 0
ApplyImageSpaceModifier Drinking1
endif

So you should be seeing the Drinking2 effect as it's never going to be 0 in this script.

Anyway back to the problem. I think when you drink another beer it causes the first script effect to terminate and run its ScriptEffectFinish block effectively setting DrinkingBeer global back to 0. So every time you drink another its set back to 1. Removing the "set drinkingbeer to drinkingbeer + 1" should have resulted in the drinking1 effect being played, so I'm not sure why you didn't see that result.

Not sure what the best way to handle this is going to be. You could try using a token to keep track of things, something like this on the token.

Begin GameModeif player.isspelltarget YourBeerSpell   return else        RemoveImageSpaceModifier Drinking1        RemoveImageSpaceModifier Drinking2        RemoveImageSpaceModifier Drinking3        RemoveImageSpaceModifier Drinking4        RemoveImageSpaceModifier Drinking5        RemoveImageSpaceModifier Drinking6        set drinkingbeer to 0        removemeendifEnd


Then add the following in the spell script and remove its ScriptEffectFinish block.

begin ScriptEffectStartif player.getitemcount YourBeerToken == 0   player.additem YourBeerToken 1 else   set drinkingbeer to drinkingbeer + 1endifif drinkingbeer == 5        RemoveImageSpaceModifier Drinking5        ApplyImageSpaceModifier Drinking6 elseif drinkingbeer == 4        RemoveImageSpaceModifier Drinking4        ApplyImageSpaceModifier Drinking5 elseif drinkingbeer == 3        RemoveImageSpaceModifier Drinking3        ApplyImageSpaceModifier Drinking4 elseif drinkingbeer == 2        RemoveImageSpaceModifier Drinking2        ApplyImageSpaceModifier Drinking3 elseif drinkingbeer == 1        RemoveImageSpaceModifier Drinking1        ApplyImageSpaceModifier Drinking2 elseif drinkingbeer == 0        ApplyImageSpaceModifier Drinking1endifend


Best I can do for now. Hope it helps.
User avatar
Nick Swan
 
Posts: 3511
Joined: Sat Dec 01, 2007 1:34 pm

Post » Sun Nov 07, 2010 10:42 am

removed the drinkingbeer global since that wasnt working for me and for ease i made the token called YourBeerToken. the script will add 1 to the game (i can see the message) but it will not add anymore until it wares off. it will only set off the first effect this way

scn drunkeneffectbeertestbegin ScriptEffectStartif player.getitemcount YourBeerToken == 5        RemoveImageSpaceModifier Drinking5        ApplyImageSpaceModifier Drinking6 elseif player.getitemcount YourBeerToken == 4        RemoveImageSpaceModifier Drinking4        ApplyImageSpaceModifier Drinking5  	   player.additem YourBeerToken 1 elseif player.getitemcount YourBeerToken == 3        RemoveImageSpaceModifier Drinking3        ApplyImageSpaceModifier Drinking4        player.additem YourBeerToken 1 elseif player.getitemcount YourBeerToken == 2        RemoveImageSpaceModifier Drinking2        ApplyImageSpaceModifier Drinking3        player.additem YourBeerToken 1 elseif player.getitemcount YourBeerToken == 1        RemoveImageSpaceModifier Drinking1        ApplyImageSpaceModifier Drinking2        player.additem YourBeerToken 1 elseif player.getitemcount YourBeerToken == 0        ApplyImageSpaceModifier Drinking1        player.additem YourBeerToken 1endifendbegin ScriptEffectFinish        RemoveImageSpaceModifier Drinking1        RemoveImageSpaceModifier Drinking2        RemoveImageSpaceModifier Drinking3        RemoveImageSpaceModifier Drinking4        RemoveImageSpaceModifier Drinking5        RemoveImageSpaceModifier Drinking6	   player.RemoveItem YourBeerToken 6 1end

User avatar
Blackdrak
 
Posts: 3451
Joined: Thu May 17, 2007 11:40 pm

Post » Sun Nov 07, 2010 3:53 pm

Ok it took me some messing about (as always) to get this to work. These are the scripts i used, first one is a base effect added to the Beer ingestible, second is on the token.

scn b3DrinkBeerbegin ScriptEffectStartif player.getitemcount YourBeerToken == 0   player.additem YourBeerToken 1   ;set drinkingbeer to drinkingbeer + 1endifend


scn b3TokenScriptshort varshort var2short doneBegin MenuModeif done == 0   set var to player.getitemcount beer   set done to 1endifif player.getitemcount beer < var   set var2 to player.getitemcount beer   set var to var - var2   set DrinkingBeer to DrinkingBeer + var   printtoconsole "Global is %.0f" DrinkingBeer   set var to player.getitemcount beerendifEndBegin GameModeif done == 0   set var to player.getitemcount beer   set done to 1endifif player.getitemcount beer < var   set var2 to player.getitemcount beer   set var to var - var2   set DrinkingBeer to DrinkingBeer + var   printtoconsole "Global is %.0f" DrinkingBeer   set var to player.getitemcount beerendif;add your global checks hereif player.isspelltarget Beer   return else        set drinkingbeer to 0        printtoconsole "DrinkBeer == 0"        removemeendifEnd


I commented out the "set drinkingbeer to drinkingbeer + 1" line because it seems the beer is not actually removed until the next frame so the get item count in the token script was not getting updated. Works like this, just add your checks for the global and image space modifiers to the area indicated.

Edit: The printtoconsole I added to track the global and it's an NVSE function so if you don't use NVSE you need to remove those lines.

Oh and you need to add your remove image space stuff before the removeme line in the token script.
User avatar
michael flanigan
 
Posts: 3449
Joined: Thu Jun 14, 2007 2:33 pm

Post » Sun Nov 07, 2010 2:29 pm

ok im going to try it out and thanks a lot for helping me out. last night i had started working on having the beer add just the token and having an additem script on the token but was getting the same results so i didnt post it

edit: awesome it works perfectly. now that it works i can finally work on getting the effects themselves down. thanks again so much!
User avatar
Janeth Valenzuela Castelo
 
Posts: 3411
Joined: Wed Jun 21, 2006 3:03 am

Post » Sun Nov 07, 2010 10:13 am

No problem, and good luck with it. Just post back if any issues pop up.
User avatar
Kitana Lucas
 
Posts: 3421
Joined: Sat Aug 12, 2006 1:24 pm

Post » Sun Nov 07, 2010 3:03 pm

i think i have your code figured out but for now if you drink a beer then a vodka, you will only set off each once. as in i have all my alcoholic drinks with their own globals, tokens and such but works good enough for government work and people on the nexus like it.
User avatar
Susan
 
Posts: 3536
Joined: Sun Jun 25, 2006 2:46 am

Post » Sun Nov 07, 2010 3:52 pm

i have edited it so that it adds the effect to all drinks so if you drink a vodka then beer and then a scotch you will see the 3rd effect and wont wear off until all the effects are over. once again thanks a lot for providing the basis of my work . If you want to check it out it is here: http://www.newvegasnexus.com/downloads/file.php?id=41443
User avatar
Sophh
 
Posts: 3381
Joined: Tue Aug 08, 2006 11:58 pm


Return to Fallout: New Vegas