
Increasing existing affects in characters
#61
Posted 05 November 2011 - 12:10 PM
I couldn't find a 2DA file for it in IESDP.
Remind me what it's supposed to be?
You've been a great help btw. If i ever release this, your nick is going to be there, ahead of mine.
#62
Posted 05 November 2011 - 04:19 PM
skillbrd
skilldex
skillrac
skillrng
My working mods:
an AI Party Script for BG2 game engine DOWNLOAD LINK ONLY!
Interactive Tweaks for BG series with some IWD support. DOWNLOAD LINK ONLY!
Rest For 8 Hours an IWD mod
-------------------------------------------
My contributions: BG1Fixpack, BG1Tweaks
On Hold: Solestia an NPC for SOA
-------------------------------------------
My website: http://sasha-altheri...s.com/index.htm
#63
Posted 05 November 2011 - 05:28 PM
I thought the engine applied those bonus whenever you did a check for the skill (so i don't have to do anything).
Granted a bard that invests in pickpocket with this would be a godly pickpocket soon, even if he's buying it with exp anyway (a thief would be even worse naturally).
So I should put in a check for classes to not increase the appropriate skills (a dick move for thieves, since all they would get from the mod would be a versatile ease of use script)?
And is the amount of "normal" skill points per level up for a thief fixed (disregarding the dex & race modifier, that i hope is applied automatically)?
Edited by i30817, 05 November 2011 - 05:39 PM.
#64
Posted 05 November 2011 - 06:48 PM
thieves skills are adjusted by how the player chooses when points are offered at level up. the files I directed you to establish the base value for any given character by race, dexterity and specific classes who don't get the option to choose where to place thief skill points
I am assuming that BG2 is similar in function. (too lazy to dig out the BG2 dvd and look up the manual...)At first level a thief character will receive 30 points
to allocate among his abilities. Every level thereafter he will gain
an extra 20 points.
My working mods:
an AI Party Script for BG2 game engine DOWNLOAD LINK ONLY!
Interactive Tweaks for BG series with some IWD support. DOWNLOAD LINK ONLY!
Rest For 8 Hours an IWD mod
-------------------------------------------
My contributions: BG1Fixpack, BG1Tweaks
On Hold: Solestia an NPC for SOA
-------------------------------------------
My website: http://sasha-altheri...s.com/index.htm
#65
Posted 06 November 2011 - 06:49 PM
You know how some quests and dialogs check for thief class?
And there is this:
ChangeClass(O:Object*,I:Value*Class)
or this
IDS: Set IDS State [72]
Imagine the effect on a "on equip" object, just for talking to those thief guild members and their pesky clairvoyance.
I think it would cry havoc if used on a party npc due to leveling though (if you were so careless to try it while you had it equipped).
The script and item text for now (removed terrible writing)
Slacking off on the Dialog script itself. It looks challenging.
Edited by i30817, 06 November 2011 - 06:59 PM.
#66
Posted 07 November 2011 - 07:57 AM
dialog is fairly easy actually.
first, write out what you want to say and in the order it should flow (i.e. NPC/item dialog followed by PC response). make note of any conditions that need to be true for that particular bit of text to be viable for use. If there are any actions you want to happen with any particular piece of text, make a note of that too.
When you got the basic idea laid out, then you can go back and actually create the IF/THEN stuff
I find it helpful to decompile any dialog file using weidu just to get an idea of what it should look like when writing a brand new dialog file.
My working mods:
an AI Party Script for BG2 game engine DOWNLOAD LINK ONLY!
Interactive Tweaks for BG series with some IWD support. DOWNLOAD LINK ONLY!
Rest For 8 Hours an IWD mod
-------------------------------------------
My contributions: BG1Fixpack, BG1Tweaks
On Hold: Solestia an NPC for SOA
-------------------------------------------
My website: http://sasha-altheri...s.com/index.htm
#67
Posted 07 November 2011 - 12:03 PM
Guess there is no way?!?
Edited by i30817, 07 November 2011 - 12:07 PM.
#68
Posted 07 November 2011 - 12:32 PM
Edited by Wisp, 07 November 2011 - 12:36 PM.
#69
Posted 07 November 2011 - 01:12 PM
TobEx requirement eh.
Well, it's not going to be a BG1 compatible mod now.
BGT/Tutu/Gemrb required...
And i need to do something about the transition not to lose the item.
Edited by i30817, 07 November 2011 - 01:14 PM.
#70
Posted 07 November 2011 - 04:42 PM
My working mods:
an AI Party Script for BG2 game engine DOWNLOAD LINK ONLY!
Interactive Tweaks for BG series with some IWD support. DOWNLOAD LINK ONLY!
Rest For 8 Hours an IWD mod
-------------------------------------------
My contributions: BG1Fixpack, BG1Tweaks
On Hold: Solestia an NPC for SOA
-------------------------------------------
My website: http://sasha-altheri...s.com/index.htm
#71
Posted 07 November 2011 - 07:00 PM
Global("gt#level","LOCALS",0)
And the global was not set by set global yet, it fails or succeeds?
Guessing fails, but maybe not since there is no clear way to check for existence.
!Global("gt#level","LOCALS",0)
(which doesn't really mean anything useful, "not zero, but is it set?").
Edited by i30817, 07 November 2011 - 08:13 PM.
#72
Posted 07 November 2011 - 08:12 PM
Only works with globals in the global namespace?
And is there anything that can multiply globals?
And it's possible to make a local into a global, that is COPY it or move it there? Since BGscript doesn't pass variables around, i'm trying to work around if "AddGlobals" above only works with GLOBAL variables.
EDIT:
EDIT 2: Ah ah, no it doesn't die to the other variable being a global too.
ActionOverride(LastTalkedTo, DialogueSetGlobal("gt#levelsgained", "LOCALS", j)) ActionOverride(LastTalkedTo, IncrementGlobal("gt#levelsgained", "LOCALS", WHAT_YOURE_TRYING_TO_USE_DYNAMIC_VARIABLES_BGSCRIPT_LAUGHTS_AT_YOU!!!)) ActionOverride(LastTalkedTo, DialogueSetGlobal("gt#level","LOCALS", -j))
Edited by i30817, 07 November 2011 - 09:21 PM.
#73
Posted 07 November 2011 - 09:15 PM
So...
IF Global("I-am-true",0) THEN RESPONSE #100 Continue() ENDwill always return true until "I-am-true" gets set to another value
You can convert local into global and vice versa..
IF Global("local-var",LOCALS,1) Global("local-var-as-global",GLOBAL,0) THEN RESPONSE #100 SetGlobal("local-var-as-global",GLOBAL,1) END
I have no knowledge of this or what it does...255 AddGlobals(S:Name*,S:Name2*)
IncrementGlobal doesn't just have to add 1... it should add whatever value you assign to the existing value. So you could use it to multiply. Say you want multiples of 5 of course it would require going thru several script parsings depending upon how high you were going
IF GlobalLT("increment-global",GLOBAL,20) THEN RESPONSE #100 IncrementGlobal("increment-global",GLOBAL,5) END IF Global("increment-global",GLOBAL,20) THEN RESPONSE #100 Continue() ENDhopefully you get the idea... tho in case you have the possibility of single increments as well as multiple then you may want to check in a range rather than for a specific # such as
IF GlobalGT("increment-global",GLOBAL,19) GlobalLT("increment-global",GLOBAL,25) THEN RESPONSE #100 IncrementGlobal("increment-global",GLOBAL,5) END IF GlobalGT("increment-global",GLOBAL,19) GlobalLT("increment-global",GLOBAL,25) THEN RESPONSE #100 Continue() ENDalso IncrementGlobal should be able to handle negative numbers too
seeing your crossed out post (which you did while I was typing this up) maybe you've already discovered this
My working mods:
an AI Party Script for BG2 game engine DOWNLOAD LINK ONLY!
Interactive Tweaks for BG series with some IWD support. DOWNLOAD LINK ONLY!
Rest For 8 Hours an IWD mod
-------------------------------------------
My contributions: BG1Fixpack, BG1Tweaks
On Hold: Solestia an NPC for SOA
-------------------------------------------
My website: http://sasha-altheri...s.com/index.htm
#74
Posted 07 November 2011 - 09:33 PM
So:
//transitions are evaluated bottom to last... IF ~~ THEN REPLY @30 EXIT //no exp for level up yet COPY_EXISTING xplevel.2da ~override~ READ_2DA_ENTRIES_NOW gt#_#xplevel 1 FOR (i = 0x0; i < gt#_#xplevel; i += 0x1) BEGIN READ_2DA_ENTRY_FORMER ~class~ i 0 PATCH_IF (~class~ STRING_EQUAL ~THIEF~) BEGIN SET thief_row = i END END COUNT_2DA_COLS levels FOR (j = 0x1; j < levels; j += 0x1) BEGIN READ_2DA_ENTRY_FORMER levelXP %thief_row% %j% SET levelXP = levelXP - 1 //level up! TODO, set the backstab value here IF ~XPGT(LastTalkedTo,levelXP) AND TriggerOverride(LastTalkedTo,GlobalLT("gt#level","LOCALS",j))~ THEN DO ~ActionOverride(LastTalkedTo, DialogueSetGlobal("gt#levelsgained", "LOCALS", j)) ActionOverride(LastTalkedTo, DialogueIncrementGlobal("gt#levelsgained", "LOCALS", I:Value*)) ActionOverride(LastTalkedTo, DialogueSetGlobal("gt#level","LOCALS", -j)) ~ GOTO 4
It (is supposed to) descends the levels of a thief, from max until least, and checks if it can jump to that. If it can, it should set the appropriated backstab multi (not done yet, but simple) and calculate the level differential to go to the second stage and distribute the points.
Problem is, what i wanted to do to calculate the differential:
ActionOverride(LastTalkedTo, DialogueSetGlobal("gt#levelsgained", "LOCALS", j)) ActionOverride(LastTalkedTo, DialogueIncrementGlobal("gt#levelsgained", "LOCALS", I:Value*)) ActionOverride(LastTalkedTo, DialogueSetGlobal("gt#level","LOCALS", -j))
Set the new level, "increment" the level (0 at stat, negative value thereafter), and set the level to the negative value.
Problem is NO way to add non-globals that are already stored! And the level variable needs to be local for consistency. And i've not found a way to move globals from a context to another.
Edited by i30817, 08 November 2011 - 07:16 AM.
#75
Posted 07 November 2011 - 10:06 PM
I just have to accept that instead of a simple subtraction and multi i have to check n states to see which one is the "one".
But before i try, i'm going to zip to tobex and request those simple actions:
multiply, add for locals, promote a variable from LOCALS to GLOBAL and viceversa.
Edited by i30817, 07 November 2011 - 10:07 PM.
#76
Posted 08 November 2011 - 07:39 AM
ie: on this D code inside a state
IF ~XPGT(LastTalkedTo,levelXP) AND TriggerOverride(LastTalkedTo,GlobalLT("gt#level","LOCALS",j))~ THEN DO ~DialogueIncrementGlobal("gt#points", "GLOBAL", 30)~ GOTO 4
Lose the GOTO 4 and don't replace it by a EXIT, or a +Number or EXTERN - just continue trying to check the other states (for obvious reasons).
I suppose it can go to the parent state and progress if it fiddles with the condition, but this would repeat the SAY part on the state...
That is obligatory if i'm not mistaken.
However, if it is empty... it might not look so bad, though inefficient.
Edited by i30817, 08 November 2011 - 08:27 AM.
#77
Posted 08 November 2011 - 09:48 AM
no.
Reply at PPG, but to help out here - the evaluation continues, working up the internal set of replies, branching off when it reaches something that is true. The exception is REPLY states - all that are valid are displayed. But each of these needs a transition of some sort, even if it is just EXIT.
There is no need to repeat the SAY - within the state itself, you can have many individual branches for evaluation which are read in during the one state. If, on the other hand, you are trying to do AddGlobals() and evaluate them, you probably need to use that in a script - dialog does not immediately process and recognize the globals unless the player has installed a special component of ToBEX. And unfortunately, installing that component is still under observation; we don't know if it is fully stable across all game conditions at the present time.
If you are looking for another way of doing this, you can handle the evaluation of conditions in script, and set a global there, and then use it to condition the replies or transitions, but there is another difficulty -
COPY_EXISTING xplevel.2da ~override~ READ_2DA_ENTRIES_NOW gt#_#xplevel 1 FOR (i = 0x0; i < gt#_#xplevel; i += 0x1) BEGIN READ_2DA_ENTRY_FORMER ~class~ i 0 PATCH_IF (~class~ STRING_EQUAL ~THIEF~) BEGIN SET thief_row = i END END COUNT_2DA_COLS levels FOR (j = 0x1; j < levels; j += 0x1) BEGIN READ_2DA_ENTRY_FORMER levelXP %thief_row% %j% SET levelXP = levelXP - 1
This is a .tp2 level action that only runs on install of your mod If you are looking to do that dynamically, within script, you will need to convert this to a dialog-state "hardcode" and use those values in a long set of evaluated actions, either in script or dialog files. There is a section like this but very simpe compared to your stuff in BG1NPC -
/* the deal is done */ APPEND ~X#LP1REP~ IF ~~ THEN X#Troubador1MakeBad SAY @110 + ~Reputation(Player1,20)~ + @111 + X#T1MB20.1 + ~Reputation(Player1,19)~ + @112 + X#T1MB19.1 + ~Reputation(Player1,18)~ + @112 + X#T1MB18.1 + ~Reputation(Player1,17)~ + @112 + X#T1MB17.1 + ~Reputation(Player1,16)~ + @112 + X#T1MB16.1 + ~Reputation(Player1,15)~ + @112 + X#T1MB15.1 + ~Reputation(Player1,14)~ + @112 + X#T1MB14.1 + ~Reputation(Player1,13)~ + @112 + X#T1MB13.1 + ~Reputation(Player1,12)~ + @112 + X#T1MB12.1 + ~Reputation(Player1,11)~ + @112 + X#T1MB11.1 + ~Reputation(Player1,10)~ + @112 + X#T1MB10.1 + ~Reputation(Player1,9)~ + @112 + X#T1MB9.1 + ~Reputation(Player1,<img src='http://www.shsforums.net/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='8)' />~ + @112 + X#T1MB8.1 + ~Reputation(Player1,7)~ + @112 + X#T1MB7.1 + ~Reputation(Player1,6)~ + @112 + X#T1MB6.1 + ~Reputation(Player1,5)~ + @112 + X#T1MB5.1 + ~Reputation(Player1,4)~ + @112 + X#T1MB4.1 + ~ReputationLT(Player1,4)~ + @112 + X#T1MBNotPossible + ~Reputation(Player1,20)~ + @113 + X#T1MB20.2 + ~Reputation(Player1,19)~ + @113 + X#T1MB19.2 + ~Reputation(Player1,18)~ + @113 + X#T1MB18.2 + ~Reputation(Player1,17)~ + @113 + X#T1MB17.2 + ~Reputation(Player1,16)~ + @113 + X#T1MB16.2 + ~Reputation(Player1,15)~ + @113 + X#T1MB15.2 + ~Reputation(Player1,14)~ + @113 + X#T1MB14.2 + ~Reputation(Player1,13)~ + @113 + X#T1MB13.2 + ~Reputation(Player1,12)~ + @113 + X#T1MB12.2 + ~Reputation(Player1,11)~ + @113 + X#T1MB11.2 + ~Reputation(Player1,10)~ + @113 + X#T1MB10.2 + ~Reputation(Player1,9)~ + @113 + X#T1MB9.2 + ~Reputation(Player1,<img src='http://www.shsforums.net/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='8)' />~ + @113 + X#T1MB8.2 + ~Reputation(Player1,7)~ + @113 + X#T1MB7.2 + ~Reputation(Player1,6)~ + @113 + X#T1MB6.2 + ~Reputation(Player1,5)~ + @113 + X#T1MB5.2 + ~Reputation(Player1,4)~ + @113 + X#T1MBALittle << Snip for space saving >> IF ~~ THEN X#T1MB20.1SAY @115++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(1499)~ + @117 DO ~TakePartyGold(1500) DestroyGold(1500) ReputationInc(-1)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB19.1SAY @118++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(1199)~ + @117 DO ~TakePartyGold(1200) DestroyGold(1200) ReputationInc(-1)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB18.1SAY @119++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(999)~ + @117 DO ~TakePartyGold(1000) DestroyGold(1000) ReputationInc(-1)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB17.1SAY @120++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(499)~ + @117 DO ~TakePartyGold(500) DestroyGold(500) ReputationInc(-1)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB16.1SAY @121++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(499)~ + @117 DO ~TakePartyGold(500) DestroyGold(500) ReputationInc(-1)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB15.1SAY @122++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(399)~ + @117 DO ~TakePartyGold(400) DestroyGold(400) ReputationInc(-1)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB14.1SAY @123++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(199)~ + @117 DO ~TakePartyGold(200) DestroyGold(200) ReputationInc(-1)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB13.1SAY @124++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(299)~ + @117 DO ~TakePartyGold(300) DestroyGold(300) ReputationInc(-1)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB12.1SAY @125++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(399)~ + @117 DO ~TakePartyGold(400) DestroyGold(400) ReputationInc(-1)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB11.1SAY @126++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(499)~ + @117 DO ~TakePartyGold(500) DestroyGold(500) ReputationInc(-1)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB10.1SAY @127++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(699)~ + @117 DO ~TakePartyGold(700) DestroyGold(700) ReputationInc(-1)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB9.1SAY @128++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(899)~ + @117 DO ~TakePartyGold(900) DestroyGold(900) ReputationInc(-1)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB8.1SAY @129++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(1199)~ + @117 DO ~TakePartyGold(1200) DestroyGold(1200) ReputationInc(-1)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB7.1SAY @130++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(1499)~ + @117 DO ~TakePartyGold(1500) DestroyGold(1500) ReputationInc(-1)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB6.1SAY @131++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(1999)~ + @117 DO ~TakePartyGold(2000) DestroyGold(2000) ReputationInc(-1)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB5.1SAY @132++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(2499)~ + @117 DO ~TakePartyGold(2500) DestroyGold(2500) ReputationInc(-1)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB4.1SAY @133++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(4999)~ + @117 DO ~TakePartyGold(5000) DestroyGold(5000) ReputationInc(-1)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB20.2SAY @134++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(2399)~ + @117 DO ~TakePartyGold(2400) DestroyGold(2400) ReputationInc(-2)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB19.2SAY @135++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(1899)~ + @117 DO ~TakePartyGold(1900) DestroyGold(1900) ReputationInc(-2)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB18.2SAY @136++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(1299)~ + @117 DO ~TakePartyGold(1300) DestroyGold(1300) ReputationInc(-2)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB17.2SAY @137++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(899)~ + @117 DO ~TakePartyGold(900) DestroyGold(900) ReputationInc(-2)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB16.2SAY @138++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(799)~ + @117 DO ~TakePartyGold(800) DestroyGold(800) ReputationInc(-2)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB15.2SAY @139++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(499)~ + @117 DO ~TakePartyGold(500) DestroyGold(500) ReputationInc(-2)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB14.2SAY @140++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(449)~ + @117 DO ~TakePartyGold(450) DestroyGold(450) ReputationInc(-2)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB13.2SAY @141++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(599)~ + @117 DO ~TakePartyGold(600) DestroyGold(600) ReputationInc(-2)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB12.2SAY @142++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(799)~ + @117 DO ~TakePartyGold(800) DestroyGold(800) ReputationInc(-2)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB11.2SAY @143++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(999)~ + @117 DO ~TakePartyGold(1000) DestroyGold(1000) ReputationInc(-2)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB10.2SAY @144++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(1399)~ + @117 DO ~TakePartyGold(1400) DestroyGold(1400) ReputationInc(-2)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB9.2SAY @145++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(1799)~ + @117 DO ~TakePartyGold(1800) DestroyGold(1800) ReputationInc(-2)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB8.2SAY @146++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(2399)~ + @117 DO ~TakePartyGold(2400) DestroyGold(2400) ReputationInc(-2)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB7.2SAY @147++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(2999)~ + @117 DO ~TakePartyGold(3000) DestroyGold(3000) ReputationInc(-2)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB6.2SAY @148++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(3999)~ + @117 DO ~TakePartyGold(4000) DestroyGold(4000) ReputationInc(-2)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB5.2SAY @149++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(6499)~ + @117 DO ~TakePartyGold(6500) DestroyGold(6500) ReputationInc(-2)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB20.3SAY @150++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(2799)~ + @117 DO ~TakePartyGold(2800) DestroyGold(2800) ReputationInc(-3)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB19.3SAY @132++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(2499)~ + @117 DO ~TakePartyGold(2500) DestroyGold(2500) ReputationInc(-3)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB18.3SAY @131++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(1999)~ + @117 DO ~TakePartyGold(2000) DestroyGold(2000) ReputationInc(-3)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB17.3SAY @151++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(1499)~ + @117 DO ~TakePartyGold(1500) DestroyGold(1500) ReputationInc(-3)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB16.3SAY @138++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(799)~ + @117 DO ~TakePartyGold(800) DestroyGold(800) ReputationInc(-3)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB15.3SAY @152++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(699)~ + @117 DO ~TakePartyGold(700) DestroyGold(700) ReputationInc(-3)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB14.3SAY @153++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(699)~ + @117 DO ~TakePartyGold(700) DestroyGold(700) ReputationInc(-3)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB13.3SAY @154++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(899)~ + @117 DO ~TakePartyGold(900) DestroyGold(900) ReputationInc(-3)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB12.3SAY @155++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(1199)~ + @117 DO ~TakePartyGold(1200) DestroyGold(1200) ReputationInc(-3)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB11.3SAY @156++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(1599)~ + @117 DO ~TakePartyGold(1600) DestroyGold(1600) ReputationInc(-3)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB10.3SAY @157++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(2199)~ + @117 DO ~TakePartyGold(2200) DestroyGold(2200) ReputationInc(-3)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB9.3SAY @158++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(2799)~ + @117 DO ~TakePartyGold(2800) DestroyGold(2800) ReputationInc(-3)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB8.3SAY @159++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(3699)~ + @117 DO ~TakePartyGold(3700) DestroyGold(3700) ReputationInc(-3)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB7.3SAY @160++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(3999)~ + @117 DO ~TakePartyGold(4000) DestroyGold(4000) ReputationInc(-3)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MB6.3SAY @161++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(7499)~ + @117 DO ~TakePartyGold(7500) DestroyGold(7500) ReputationInc(-3)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MBALittleSAY @162++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(4999)~ + @117 DO ~TakePartyGold(5000) DestroyGold(5000) ReputationInc(-1)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MBModerateSAY @163++ @116 + X#Troubador1NoCoin+ ~PartyGoldGT(7499)~ + @117 DO ~TakePartyGold(7500) DestroyGold(7500) ReputationInc(-2)~ + X#Troubador1FinalEND IF ~~ THEN X#T1MBNotPossibleSAY @164IF ~~ THEN EXITEND IF ~~ THEN X#Troubador1NoCoinSAY @165IF ~~ THEN EXITEND IF ~~ THEN X#Troubador1FinalSAY @166IF ~~ THEN DO ~SetGlobal("X#TT1Deactivate","GLOBAL",1)~ EXITEND END
Full stuff at https://github.com/c...lg/x%23lp1rep.d if it helps.
Edited by cmorgan, 08 November 2011 - 09:58 AM.
#78
Posted 08 November 2011 - 10:10 AM
I thought that that DialogueIncrementGlobal problem was because Ascension64 had tried first to modify the (Set/Increment)Global function(s) directly instead of creating (a) new one(s) and that failed on some dialogs that expected the old values on the rest of the dialog.
As this dialog is new, and using the new function, it shouldn't have a problem.
Edited by i30817, 08 November 2011 - 10:11 AM.
#79
Posted 08 November 2011 - 11:02 AM
They have a single skill in the chargen screen called "stealth". It seems their points might be redistributed times 2 to both.
Edit: mystery solved with shadowkeeper
Divides the skill by both.
Edited by i30817, 08 November 2011 - 01:50 PM.
#80
Posted 08 November 2011 - 12:52 PM
It's pretty nasty (DO part removed):
IF ~CheckStat(LastTalkedTo, 254, TRAPS) AND GlobalGT("gt#points", "GLOBAL", 0)~ REPLY @37 IF ~CheckStat(LastTalkedTo, 253, TRAPS) AND Global("gt#points", "GLOBAL", 1) ~ REPLY @37 IF ~CheckStat(LastTalkedTo, 253, TRAPS) AND GlobalGT("gt#points", "GLOBAL", 1)~ REPLY @37 IF ~CheckStat(LastTalkedTo, 252, TRAPS) AND Global("gt#points", "GLOBAL", 1) ~ REPLY @37 IF ~CheckStat(LastTalkedTo, 252, TRAPS) AND Global("gt#points", "GLOBAL", 2) ~ REPLY @37 IF ~CheckStat(LastTalkedTo, 252, TRAPS) AND GlobalGT("gt#points", "GLOBAL", 2)~ REPLY @37 IF ~CheckStat(LastTalkedTo, 251, TRAPS) AND Global("gt#points", "GLOBAL", 1) ~ REPLY @37 IF ~CheckStat(LastTalkedTo, 251, TRAPS) AND Global("gt#points", "GLOBAL", 2) ~ REPLY @37 IF ~CheckStat(LastTalkedTo, 251, TRAPS) AND Global("gt#points", "GLOBAL", 3) ~ REPLY @37 IF ~CheckStat(LastTalkedTo, 251, TRAPS) AND GlobalGT("gt#points", "GLOBAL", 3)~ REPLY @37 IF ~CheckStatLT(LastTalkedTo, 251, TRAPS) AND Global("gt#points", "GLOBAL", 1) ~ REPLY @37 IF ~CheckStatLT(LastTalkedTo, 251, TRAPS) AND Global("gt#points", "GLOBAL", 2) ~ REPLY @37 IF ~CheckStatLT(LastTalkedTo, 251, TRAPS) AND Global("gt#points", "GLOBAL", 3) ~ REPLY @37 IF ~CheckStatLT(LastTalkedTo, 251, TRAPS) AND Global("gt#points", "GLOBAL", 4) ~ REPLY @37 IF ~CheckStatLT(LastTalkedTo, 251, TRAPS) AND GlobalGT("gt#points", "GLOBAL", 4)~ REPLY @37 ....This is supposed to only allow displaying one option or none (stat at 255 or no remaining points).
etc for the others. The DO removes the points (5,4,3,2 or 1), and ApplySpellRES a spell with the stat increase effect.
For usability it would be best to display the current amount of points, but again, not having a way to print stats directly, the situation is pretty dire, with the "best" option being a binary search with CheckStat + a cache.
Edited by i30817, 08 November 2011 - 01:30 PM.