Scriptname FavorDialogueScript extends Quest Conditional {functions and properties used by favor dialogue} GlobalVariable Property GameDaysPassed Auto GlobalVariable Property IntimidateBribeDelayDays Auto GlobalVariable Property FlatterDelayDays Auto GlobalVariable Property BribeReward Auto GlobalVariable Property FlatterReward Auto GlobalVariable Property IntimidateReward Auto GlobalVariable Property IntimidateCost Auto {favor point cost from intimidating} MiscObject Property Gold Auto Keyword Property BrawlKeyword Auto {used for brawl story event} float Property SkillUsePersuade Auto Conditional {skill uses for flatter (magnitude for AdvanceSkill)} float Property SkillUseBribe Auto Conditional {skill uses for flatter (magnitude for AdvanceSkill)} float Property SkillUseIntimidate Auto Conditional {skill uses for flatter (magnitude for AdvanceSkill)} float Property SkillUseMultiplier Auto Conditional {Base multiplier for skill uses. Formula is based off the skill use multiplier set in Speechcraftt} float Property SkillUseGiveGiftMult = 1.0 Auto Conditional {skill uses for flatter (multipler for for AdvanceSkill magnitude)} GlobalVariable Property SpeechSkillMult Auto {Global to determine skill uses} import game import debug ; call this to persuade target actor Function Persuade(Actor pTarget) ;trace("Persuade: " + pTarget) ; give player skill uses SkillUseMultiplier = SpeechSkillMult.value SkillUsePersuade = SkillUseMultiplier * Game.GetPlayer().GetActorValue("Speechcraft") ;trace(self + "Current Skill uses given: " + SkillUsePersuade + " times the Skill Use Multiplier") AdvanceSkill("Speechcraft", SkillUsePersuade) Game.IncrementStat( "Persuasions" ) if ( Game.QueryStat( "Bribes" ) && Game.QueryStat( "Intimidations" ) ) AddAchievement(28) endif endFunction Function ArrestPersuade(Actor pTarget) ;trace("Persuade: " + pTarget) ; give player skill uses SkillUseMultiplier = SpeechSkillMult.value SkillUsePersuade = SkillUseMultiplier * Game.GetPlayer().GetActorValue("Speechcraft") AdvanceSkill("Speechcraft", SkillUsePersuade) Game.IncrementStat( "Persuasions" ) if ( Game.QueryStat( "Bribes" ) && Game.QueryStat( "Intimidations" ) ) AddAchievement(28) endif ; set bribed state pTarget.SetBribed() endFunction ; call this to bribe target actor Function Bribe(Actor pTarget) ;trace("Bribe: " + pTarget) SkillUseMultiplier = SpeechSkillMult.value SkillUseBribe = SkillUseMultiplier * Game.GetPlayer().GetActorValue("Speechcraft") ;trace(self + "Current Skill uses given: " + SkillUseBribe + " times the Skill Use Multiplier") if pTarget.GetBribeAmount() <= GetPlayer().GetGoldAmount() ; remove gold GetPlayer().RemoveItem(Gold, pTarget.GetBribeAmount()) ; put gold in target pTarget.AddItem(Gold, pTarget.GetBribeAmount()) ; set bribed state pTarget.SetBribed() ; give player skill uses AdvanceSkill("Speechcraft", SkillUseBribe) ; increment game stats Game.IncrementStat( "Bribes" ) if ( Game.QueryStat( "Persuasions" ) && Game.QueryStat( "Intimidations" ) ) Game.AddAchievement(28) endif endif endFunction ; call this to intimidate target actor Function Intimidate(Actor pTarget) ;trace("Intimidate: " + pTarget) SkillUseMultiplier = SpeechSkillMult.value SkillUseIntimidate = SkillUseMultiplier * Game.GetPlayer().GetActorValue("Speechcraft") ;trace(self + "Current Skill uses given: " + SkillUseIntimidate + " times the Skill Use Multiplier") ; intimidate actor pTarget.SetIntimidated() ; give player skill uses. don't if the Brawl quest is running, don't track intimidation stats for Brawl Game.IncrementStat( "Intimidations" ) endFunction ; call this to initiate brawl quest through story manager Function Brawl(Actor pTarget, Actor pTargetFriend = None) ;trace("Brawl: " + pTarget + ", friend=" + pTargetFriend) BrawlKeyword.SendStoryEvent(None, pTarget, pTargetFriend) endFunction ; call this to give gift to target actor Function GiveGift(Actor pTarget) FormList giftFilter = pTarget.GetActorBase().GetGiftFilter() ;trace("Give Gift: " + pTarget + ", gift filter = " + giftFilter) int favorPointsEarned = pTarget.ShowGiftMenu(true, giftFilter) ; TEMP cap until we have a formula for this: if favorPointsEarned > 100 favorPointsEarned = 100 endif ; give player skill uses ;trace("Give Gift: " + favorPointsEarned * SkillUseGiveGiftMult + " skill uses earned") AdvanceSkill("Speechcraft", favorPointsEarned * SkillUseGiveGiftMult) endFunction