Skip to content

Have a few minor issues i need help with on vampire kit

Gel87Gel87 Member Posts: 228
edited November 3 in BG:EE Mods
Yo,
Made a vampire Monk kit. And since im far from pro at this thing i have spendt hours making it playable, installable etc but it misses 2 things. I know there are already good vampire mods and such, but i prefer to make stuff myself.

1. My Blood Drain spell. After i reached certain levels it has an extra effect, or is supposed to have an extra effect. If enemy fail saving throw vs death at +2, then they are supposed to be insta killed, then raised as vampire, depending on gender they will polymorph into correct gender of vampire.

The way i tried doing that was this:
Near infinity:
GelVa07.spl (Blood Drain)
- Set AI Script (82), preset target, Script Level: Override - 0, timing mode: Delay/permanent duration - 4, none magical, duration: 2, Probability: 100, resource: GelVa30, Saving throw vs death at 2.
- Set AI Script (82), preset target, Script Level: Override - 0, timing mode: Delay/permanent duration - 4, none magical, duration: 4, Probability: 100, resource: GelVa20, Saving throw vs death at 2.
- Kill taget, same as above, but without source and with "normal death", delay/permanent 2 seconds as above.
- Raise dead, Restore animation (NO), delayed/permanent at 3 seconds, same save etc.
- Charm creature, preset target, Creature type: general Item, charm type: Controlled, delay/permanent duration 3, same saves etc.
- Modify Global value: GelVa20, Value 1, preset target, set, instant/limited duration 4, same saves etc. (The stupid thing is that GelVa20 global is listed in GelVa30.bcs, but its the correct one. Just confusing xD

GelVa30.bcs = Transform to Vampire based on gender type.
IF
    Global("GelVa20","GLOBAL",1) // Triggered by custom blood drain spell for GeKitVa
    HitBy("GelVa07",16) // Custom Blood Drain, will change name later to Gel something
    Gender(Myself,MALE)
THEN
    RESPONSE #100
        ReallyForceSpellRES("GelVa20",Myself)  // PolyMorph Male Vampire
	SetGlobal("GelVa20","GLOBAL",0)
END

IF
    Global("GelVa20","GLOBAL",1)
    HitBy("GelVa07",16) // Custom Blood Drain, will change name later to Gel something
    Gender(Myself,FEMALE)
THEN
    RESPONSE #100
        ReallyForceSpellRES("GelVa21",Myself) // PolyMorph Female Vampire
	SetGlobal("GelVa20","GLOBAL",0)
END

GelVa20.bcs = Burn to death in sunlight, global value set in other scrips which is my 2nd problem:
IF
        OR(2)
	Global("Sunlight","GLOBAL",3)
	Global("Sunlight","GLOBAL",4)	

THEN
    RESPONSE #100
        ReallyForceSpellRES("GelVa31",Myself) 
END

GelVa02.bcs
IF // CHecks for custom Vampires
	OR(6)
        Race(Player1, Vampire)
        Race(Player2, Vampire)
        Race(Player3, Vampire)
        Race(Player4, Vampire)
        Race(Player5, Vampire)
        Race(Player6, Vampire)
        OR(8)
        Kit(Player1, GeVaKit)  // Shadow Lurker Vampire
        Kit(Player2, GeVaKit) 
        Kit(Player3, GeVaKit) 
        Kit(Player4, GeVaKit) 
        Kit(Player5, GeVaKit) 
        Kit(Player6, GeVaKit) 
        NumCreatureGT("GelVa20",0) // Turned Male Vampire
        NumCreatureGT("GelVa21",0) // Turned Female Vampire
        //!HasItem("GelVa06") // Vampire Wepon +5 given by Vampire Origin Shape. (must place this later)
	//!HasItemEquiped("GelVa02",LastSummonerOf(Myself))
THEN
    RESPONSE #100
        SetGlobal("Sunlight","GLOBAL",1)
END

IF // Checks for sunlight hours
    OR(2)
        TimeGT(DAWN_START)
        TimeLT(DAWN_END)
THEN
    RESPONSE #100
        SetGlobal("Sunlight","GLOBAL",2)
END

IF // Checks for sunlight blocking conditions and none weather areas.
       OR(6)
       !Global("WEATHER","LOCALS",3) // Rain
       !Global("WEATHER","LOCALS",4) // Snow
       !Global("WEATHER","LOCALS",5) // Fog
       !AreaType(DUNGEON)
       !AreaType(EXTENDEDNIGHT)
       //!AreaType(DREAMAREA) // Should be some commando for Area Flag
       AreaType(OUTDOOR)
       AreaType(CITY)

THEN
    RESPONSE #100
        SetGlobal("Sunlight","GLOBAL",3)
END

IF
        Global("Sunlight","GLOBAL",3)
	!HasItemEquiped("GelVa02",LastSummonerOf(Myself))
        //AreaType(NOREST)
THEN
    RESPONSE #100
        ReallyForceSpellRES("GelVa30",Player1) // SummonInvisible Creature 
        SetGlobal("Sunlight","GLOBAL",4)  // Will force Invisible creature to cast Dissintigrate on relevant targets.

END

Please help, im stuck. I kinda want to get started with my team consisting off:
Ninja Assassin
Shadow Lurker (monk vampire)
Mindflayer (Close combat mage mindflayer)
Banshee (mage with custom spells and albilities, and undeadshapeshift at late stage)
Paladin Half Dragon (Not done)
Siren (archer with some albilites, it bugs out in bg2ee, so need to fix that xD)

Comments

  • Gel87Gel87 Member Posts: 228
    Okay, so i google’ed a little.
    For raise dead to work, death must not be permanent, so i guess i must make it delay/limited.
    The whole idea of the death is to Get xp for kill. Else they could just sleep their 10 seconds and raise as enemy.

    Now, i also dont know if dead creatures are able use scripts. So maby i have to have a second look at timings as well.

    1. sleep and animations (myself is pauses a while)
    2. delayed/limited kill target (1 second)
    3. 55 piercing damage, only happens if target saved vs death. (2 seconds)
    4. Charm creature if fail saving throw (3seconds)
    5. give script gelva30 delayed/permanent(3seconds) - turn Vampire.
    6. Raise dead delayed/permanent (4 seconds)
    7. Give script (gelva20) delay/permanent (10 seconds to time with raising up)

    Maby would work better in that way.


    I also thought some about using the invisible creature that transforms me into Vampire, to cast a spell to give me the sunburn script (gelva2). This way it would assign to the right character, lol i could Even put such a spell in my clab table to self assign script? But then i also dont know if i have to have AI scripts on? Any know a good way? :p
  • Gel87Gel87 Member Posts: 228
    edited November 3
    Okay, so i think i need to build 2 seperate sunlight scripts for me and my turned Vampire. Cause that would keep sunlight script at global value 1 as long ring is equipped. And ready to excecute at once ring is off, but i should keep indoor and outdoor and sunlight conditions at that same point, to make sure it do not step by step increase global value and dont accounts for all and burns me in wrong situations.
    IF
           !HasItemEquiped("GelVa02",Myself)
           TimeGT(DAWN_START)
           TimeLT(DAWN_END)
           OR(5)
           !Global("WEATHER","LOCALS",3) // Rain
           !Global("WEATHER","LOCALS",4) // Snow
           !Global("WEATHER","LOCALS",5) // Fog
           !AreaType(DUNGEON)
           !AreaType(EXTENDEDNIGHT)
           //!AreaType(DREAMAREA) // Dont work
           OR(2)
           AreaType(OUTDOOR)
           AreaType(CITY)
    
    THEN
        RESPONSE #100
            SetGlobal("Sunlight","GLOBAL",1)
    END
    
    IF
            Global("Sunlight","GLOBAL",1)
    THEN
        RESPONSE #100
            ReallyForceSpellRES("GelVa31",Myself) // Burn me to death
            Wait(10)
            SetGlobal("Sunlight","GLOBAL",0)
    END
    

    Only thing i Wonder is if this scripts differ between indoor a building or outdoor in city or whatever. Same script should work for turned vampires as they do not have ring anyway xD
  • Gel87Gel87 Member Posts: 228
    edited November 3
    Okay, so i made a new script. Only way i found to make such work. I will put it into baldur.bcs with EXTEND_BOTTOM feature.

    So how do i do this? Like this?
    COPY_EXISTING ~BALDUR.BCS~ ~override~
    	EXTEND_BOTTOM ~BALDUR.BCS~ ~GeVaKit/Scripts/Baldur.baf~
    
    That actually worked xD

    Now issue is that i dont burn.
    The spell that turns me to vampire set the Global Value GeBurn to 1.
    I still dont burn when taking off ring. Either outside in candlekeep or in tavern. Could any1 help me? xD
    IF
    	Kit(PLAYER1,GeVaKit)
    	Class(PLAYER1,MONK)
    	Global("GeBurn","GLOBAL",1)
    	ActionListEmpty()
    	!HasItemEquiped("GelVa02",PLAYER1)
    	TimeGT(DAWN_START)
    	TimeLT(DAWN_END)
    	OR(5)
    	!Global("WEATHER","LOCALS",3) // Rain
    	!Global("WEATHER","LOCALS",4) // Snow
    	!Global("WEATHER","LOCALS",5) // Fog
    	!AreaType(DUNGEON)
    	!AreaType(EXTENDEDNIGHT)
    	//!AreaType(DREAMAREA) // Dont work
    	OR(2)
    	AreaType(OUTDOOR)
    	AreaType(CITY)
    THEN
    	RESPONSE #100
    		SetGlobal("GeBurn","GLOBAL",2)
    		ReallyForceSpellRES("GelVa31",PLAYER1)
    		Continue()
    END
    
    IF
    	Kit(PLAYER2,GeVaKit)
    	Class(PLAYER2,MONK)
    	Global("GeBurn","GLOBAL",1)
    	ActionListEmpty()
    	!HasItemEquiped("GelVa02",PLAYER2)
    	TimeGT(DAWN_START)
    	TimeLT(DAWN_END)
    	OR(5)
    	!Global("WEATHER","LOCALS",3) // Rain
    	!Global("WEATHER","LOCALS",4) // Snow
    	!Global("WEATHER","LOCALS",5) // Fog
    	!AreaType(DUNGEON)
    	!AreaType(EXTENDEDNIGHT)
    	//!AreaType(DREAMAREA) // Dont work
    	OR(2)
    	AreaType(OUTDOOR)
    	AreaType(CITY)
    THEN
    	RESPONSE #100
    		SetGlobal("GeBurn","GLOBAL",2)
    		ReallyForceSpellRES("GelVa31",PLAYER2)
    		Continue()
    END
    
    IF
    	Kit(PLAYER3,GeVaKit)
    	Class(PLAYER3,MONK)
    	Global("GeBurn","GLOBAL",1)
    	ActionListEmpty()
    	!HasItemEquiped("GelVa02",PLAYER3)
    	TimeGT(DAWN_START)
    	TimeLT(DAWN_END)
    	OR(5)
    	!Global("WEATHER","LOCALS",3) // Rain
    	!Global("WEATHER","LOCALS",4) // Snow
    	!Global("WEATHER","LOCALS",5) // Fog
    	!AreaType(DUNGEON)
    	!AreaType(EXTENDEDNIGHT)
    	//!AreaType(DREAMAREA) // Dont work
    	OR(2)
    	AreaType(OUTDOOR)
    	AreaType(CITY)
    THEN
    	RESPONSE #100
    		SetGlobal("GeBurn","GLOBAL",2)
    		ReallyForceSpellRES("GelVa31",PLAYER3)
    		Continue()
    END
    
    IF
    	Kit(PLAYER4,GeVaKit)
    	Class(PLAYER4,MONK)
    	Global("GeBurn","GLOBAL",1)
    	ActionListEmpty()
    	!HasItemEquiped("GelVa02",PLAYER4)
    	TimeGT(DAWN_START)
    	TimeLT(DAWN_END)
    	OR(5)
    	!Global("WEATHER","LOCALS",3) // Rain
    	!Global("WEATHER","LOCALS",4) // Snow
    	!Global("WEATHER","LOCALS",5) // Fog
    	!AreaType(DUNGEON)
    	!AreaType(EXTENDEDNIGHT)
    	//!AreaType(DREAMAREA) // Dont work
    	OR(2)
    	AreaType(OUTDOOR)
    	AreaType(CITY)
    THEN
    	RESPONSE #100
    		SetGlobal("GeBurn","GLOBAL",2)
    		ReallyForceSpellRES("GelVa31",PLAYER4)
    		Continue()
    END
    
    IF
    	Kit(PLAYER5,GeVaKit)
    	Class(PLAYER5,MONK)
    	Global("GeBurn","GLOBAL",1)
    	ActionListEmpty()
    	!HasItemEquiped("GelVa02",PLAYER5)
    	TimeGT(DAWN_START)
    	TimeLT(DAWN_END)
    	OR(5)
    	!Global("WEATHER","LOCALS",3) // Rain
    	!Global("WEATHER","LOCALS",4) // Snow
    	!Global("WEATHER","LOCALS",5) // Fog
    	!AreaType(DUNGEON)
    	!AreaType(EXTENDEDNIGHT)
    	//!AreaType(DREAMAREA) // Dont work
    	OR(2)
    	AreaType(OUTDOOR)
    	AreaType(CITY)
    THEN
    	RESPONSE #100
    		SetGlobal("GeBurn","GLOBAL",2)
    		ReallyForceSpellRES("GelVa31",PLAYER5)
    		Continue()
    END
    
    IF
    	Kit(PLAYER6,GeVaKit)
    	Class(PLAYER6,MONK)
    	Global("GeBurn","GLOBAL",1)
    	ActionListEmpty()
    	!HasItemEquiped("GelVa02",PLAYER6)
    	TimeGT(DAWN_START)
    	TimeLT(DAWN_END)
    	OR(5)
    	!Global("WEATHER","LOCALS",3) // Rain
    	!Global("WEATHER","LOCALS",4) // Snow
    	!Global("WEATHER","LOCALS",5) // Fog
    	!AreaType(DUNGEON)
    	!AreaType(EXTENDEDNIGHT)
    	//!AreaType(DREAMAREA) // Dont work
    	OR(2)
    	AreaType(OUTDOOR)
    	AreaType(CITY)
    THEN
    	RESPONSE #100
    		SetGlobal("GeBurn","GLOBAL",2)
    		ReallyForceSpellRES("GelVa31",PLAYER6)
    		Continue()
    END
    
    Post edited by Gel87 on
  • Gel87Gel87 Member Posts: 228
    Maby my script is completely fault, but i also think maby it does not tell who should cast the spells.
    So maby i need to use
    ActionOverride(Player1, ReallyForceSpellRES(«GelVa31»,Player1))
  • Gel87Gel87 Member Posts: 228
    edited November 4
    What am i doing wrong?
    It dont burn me...
    Maby its something with the GelVa31 spell itself?

    Would it be better to Extend_TOP?
    Tried different spell which i know she has in lvl 1 failed.
    Tried copying the global set to 1 which works, and added the "GeBurn" to that spell as well. So its 100% same function only different global names, and within the same spell.

    Nothing seems to work. My vampire never burn in sunlight xD

    Tried narrowing it down to:
    IF
    	Kit(PLAYER1,GeVaKit)
    	Class(PLAYER1,MONK)
    	Global("GeBurn","GLOBAL",1) // Set by GelVa70.spl, which also sets global for male/female vampire shapeshift script
    	!HasItemEquiped("GelVa02",PLAYER1)
    	TimeGT(DAWN_START)
    	TimeLT(DAWN_END)
    	//OR(5)
    	//!Global("WEATHER","LOCALS",3) // Rain
    	//!Global("WEATHER","LOCALS",4) // Snow
    	//!Global("WEATHER","LOCALS",5) // Fog
    	//!AreaType(DUNGEON)
    	//!AreaType(EXTENDEDNIGHT)
    	//!AreaType(DREAMAREA) // Dont work
    	OR(2)
    	AreaType(OUTDOOR)
    	AreaType(CITY)
    	ActionListEmpty()
    THEN
    	RESPONSE #100
    		SetGlobal("GeBurn","GLOBAL",2)
    		ActionOverride(PLAYER1,ReallyForceSpellRES("GelVa31",PLAYER1))
    		//ReallyForceSpellRES("GelVa31",PLAYER1)
    		Continue()
    END
    
  • morpheus562morpheus562 Member Posts: 311
    You could have the monk kit clab file assign an effect to the character that will add a script of your choosing to that character to run in the background. Script level 6 (General) is free and available. This way your character is the one doing the checks and you can use Myself instead of Player1, Player2, Player3, etc.
  • Gel87Gel87 Member Posts: 228
    You could have the monk kit clab file assign an effect to the character that will add a script of your choosing to that character to run in the background. Script level 6 (General) is free and available. This way your character is the one doing the checks and you can use Myself instead of Player1, Player2, Player3, etc.

    Ah okay, i kinda tried something like that.
    Script level 6 (general) works for this? I tried override. Maby my script was faulty back then when i tried it. Maby its faulty still :p

    Googled this on this iesdp page
    So op code (82) set AI script:

    Note:
    Effect is always instantaneous/delayed.
    AREA and SPECIFICS can only be set on non-global creatures (not potential party members or familiars), and are lost upon saving & reload.
  • morpheus562morpheus562 Member Posts: 311
    One way to troubleshoot is to have the action performed something other than the casting of the spell. You could have character display text if true and then you see the text over the respective characters head. From there, you can then move on and troubleshoot the next step like getting the spell to cast and work appropriately.
  • Gel87Gel87 Member Posts: 228
    One way to troubleshoot is to have the action performed something other than the casting of the spell. You could have character display text if true and then you see the text over the respective characters head. From there, you can then move on and troubleshoot the next step like getting the spell to cast and work appropriately.

    Thanks, I was on the thought of something like yesterday, but ran out of time.
    But i know to little about text, i have never used a single dialog script xD
    So i will just make a simple Die commando, and if my character dies im closer to figuring it out :p

    But while running true the isdep page i now think i found a solution to my «turning Vampire» effect on Blood Drain.

    2 x use EFF file (OP code 177).
    1 for each gender, only happens if gender is correct, so only one should happen each time.
    Then resource effect: #155 Summon: Replace Creature. Note says i will Get the xp as well, and 2 of the factors are killing the creature. And then as long as my custom vampires are «ALLY» i dont have to mess with charm etc
  • Gel87Gel87 Member Posts: 228
    Okay, I now turn Vampire based on gender from level 15 if they fail saving throw.
    USE EFF File: Gender, Male: Resource: Custom ReplaceSelf.eff(op code 151)
    And then the same for female.

    Neither me or my vampires seems to burn etc, replaced all the fancy spellcasting with die(myself) just to test. But sun cant touch us :(
  • Gel87Gel87 Member Posts: 228
    edited November 6
    It works now. Was able to make it work in 2 different ways.
    First baldur.bcs, then the op code to assign script via spell in clab table.
    The main reason why it did not work was due to time. From DAWN start to DAWN end i had. Changed into DAWN to dust now. Works wonders :)

    Works perfectly, can take of ring at night, and indoor, but burns to death if outdoor xD

    Currently playing 4 kits playthough, Shadow lurker(Vampire Monk), Banshee(Mage), Mindflayer(Mage), Ninja Assassin(Thief)

    https://youtu.be/addTG_RqRjU?si=mXqfXlT-_rZFl444
  • Gel87Gel87 Member Posts: 228
    Yo, i have a issue. If my bat swarm spell kills enemies i dont Get xp.

    I cast a spell, that cast a spell that summons bats. It starts with 3 bats in level 1. they all do 3 damage twice by casting a spell once upon target and are scripted to do so. However, since bat was not summoned by me directly i dont seem to Get any xp. If i summon the bats directly they will count on my summon cap.

    Any quick fix to this?
    - Change bats to party members? They are now «controlled» i think.
    - Remove summon cap when casting this spell? Limited.
    - Bats override my char to cast the spell? I fear this will interupt my other actions etc and will be annoying.
Sign In or Register to comment.