LoneGazebo / Community-Patch-DLL

Community Patch for Civilization V - Brave New World
Other
285 stars 158 forks source link

EventBuildingClassGlobal Expiration #2444

Closed TechpriestEnginseer closed 8 years ago

TechpriestEnginseer commented 8 years ago

I'm not sure if it's faulty coding on my part.. but EventBuildingClassGlobal seems to not expire.

LoneGazebo commented 8 years ago

Should work -make sure the event choice has the expiration set to true, and that you have a duration.

TechpriestEnginseer commented 8 years ago

What do I have missing then?

INSERT INTO Language_en_US (Text, Tag)
SELECT  'Religion Civics', 
        'TXT_KEY_PLAYER_EVENT_RELIGIONCIVIC_DESCRIPTION' UNION ALL
SELECT  '"Three things are necessary for the salvation of man: to know what he ought to believe; to know what he ought to desire; and to know what he ought to do."[NEWLINE]--St. Thomas Aquinas',
        'TXT_KEY_PLAYER_EVENT_RELIGIONCIVIC_HELP' UNION ALL
SELECT  'Paganism',
        'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_1' UNION ALL
SELECT  '[ICON_BULLET]Low Upkeep (-{1_Maintenance}[ICON_GOLD])[NEWLINE][ICON_BULLET][COLOR_POSITIVE_TEXT]+1 [ICON_GOLD] Gold in the Capital.[ENDCOLOR][NEWLINE][ICON_BULLET][COLOR_POSITIVE_TEXT]-20% [ICON_HAPPINESS_4] from Religious Unrest[ENDCOLOR][NEWLINE][ICON_BULLET]No [ICON_RESISTANCE] Resistance when chosen',
        'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_1_HELP' WHERE EXISTS (SELECT * FROM COMMUNITY WHERE Type='CIVICS' AND Value= 1 ) UNION ALL
SELECT  '[ICON_BULLET]Low Upkeep[NEWLINE][ICON_BULLET][COLOR_POSITIVE_TEXT]+1 [ICON_GOLD] Gold in the Capital.[ENDCOLOR][NEWLINE][ICON_BULLET]No [ICON_RESISTANCE] Resistance when chosen',
        'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_1_HELP' WHERE EXISTS (SELECT * FROM COMMUNITY WHERE Type='CIVICS' AND Value= 0 ) UNION ALL
SELECT  'Ancestor Worship', 
        'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_7' UNION ALL
SELECT  '[ICON_BULLET]Requires Pottery[NEWLINE][ICON_BULLET]Medium Upkeep (-{1_Maintenance}[ICON_GOLD])[NEWLINE][ICON_BULLET][COLOR_POSITIVE_TEXT]New [ICON_CITIZEN] Citizens generate [ICON_PEACE] Faith and [ICON_CULTURE] Culture[ENDCOLOR]', 
        'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_7_HELP' UNION ALL
SELECT  'Organized Religion',
        'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_2' UNION ALL
SELECT  '[ICON_BULLET]Requires Philosophy[NEWLINE][ICON_BULLET]High Upkeep (-{1_Maintenance}[ICON_GOLD])[NEWLINE][ICON_BULLET][COLOR_POSITIVE_TEXT]Cities following your [ICON_RELIGION] Majority Religion generate +3 [ICON_PRODUCTION] Production and +2 [ICON_PEACE] Faith[ENDCOLOR][NEWLINE][ICON_BULLET][COLOR_POSITIVE_TEXT]Cities with Shrine and Temple generate +2 [ICON_GOLD] Gold and +1 [ICON_PEACE] Faith[ENDCOLOR][NEWLINE][ICON_BULLET][COLOR_POSITIVE_TEXT][ICON_PEACE]-15% Faith Cost for Units and Buildings[ENDCOLOR]', 
        'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_2_HELP' UNION ALL
SELECT  'Theocracy', 
        'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_3' UNION ALL
SELECT  '[ICON_BULLET]Requires Theology[NEWLINE][ICON_BULLET]Medium Upkeep (-{1_Maintenance}[ICON_GOLD])[NEWLINE][ICON_BULLET][COLOR_POSITIVE_TEXT]Units receive +10% [ICON_COMBAT] Combat Strength[ENDCOLOR][NEWLINE][ICON_BULLET][COLOR_POSITIVE_TEXT]Missionaries and Great Prophets of foreign religion cannot spread to your Cities.[ENDCOLOR]', 
        'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_3_HELP' UNION ALL
SELECT  'Pacifism', 
        'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_4' UNION ALL
SELECT  '[ICON_BULLET]Requires Biology[NEWLINE][ICON_BULLET]No Upkeep[NEWLINE][ICON_BULLET][COLOR_POSITIVE_TEXT]+75% [ICON_GREAT_PEOPLE] Great People Generation Rate[ENDCOLOR][NEWLINE][ICON_BULLET][COLOR_NEGATIVE_TEXT]+40% Unit Maintenance (-{1_Maintenance}[ICON_GOLD])[ENDCOLOR]', 
        'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_4_HELP' UNION ALL
SELECT  'State Atheism', 
        'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_5' UNION ALL
SELECT  '[ICON_BULLET]Requires Flight[NEWLINE][ICON_BULLET]Medium Upkeep (-{1_Maintenance}[ICON_GOLD])[NEWLINE][ICON_BULLET][COLOR_POSITIVE_TEXT]All positive [ICON_HAPPINESS_1] Happiness is converted twofold to [ICON_CULTURE] Culture[ENDCOLOR][NEWLINE][ICON_BULLET][COLOR_NEGATIVE_TEXT]Cities normally produce little or no religious pressure[ENDCOLOR][NEWLINE][ICON_BULLET][COLOR_NEGATIVE_TEXT]Cannot Spread Religion nor Purge in your Cities[ENDCOLOR][NEWLINE][ICON_BULLET][COLOR_NEGATIVE_TEXT]Trade Routes from your Cities normally produce little to no religious presence[ENDCOLOR]', 
        'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_5_HELP' UNION ALL
SELECT  'Free Religion', 
        'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_6' UNION ALL
SELECT  '[ICON_BULLET]Requires Penicilin[NEWLINE][ICON_BULLET]Medium Upkeep (-{1_Maintenance}[ICON_GOLD])[NEWLINE][ICON_BULLET][COLOR_POSITIVE_TEXT]+1 [ICON_HAPPINESS_1] Happiness in all Cities.[ENDCOLOR][NEWLINE][ICON_BULLET][COLOR_POSITIVE_TEXT]Cities produce +10% [ICON_RESEARCH] Science[ENDCOLOR][NEWLINE][ICON_BULLET][COLOR_POSITIVE_TEXT]Cities with a majority religion also get the Pantheon belief bonus of the second most popular religion[ENDCOLOR]', 
        'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_6_HELP' WHERE EXISTS (SELECT * FROM COMMUNITY WHERE Type='CIVICS' AND Value= 1 ) UNION ALL
SELECT  '[ICON_BULLET]Requires Penicilin[NEWLINE][ICON_BULLET]Medium Upkeep (-{1_Maintenance}[ICON_GOLD])[NEWLINE][ICON_BULLET][COLOR_POSITIVE_TEXT]+1 [ICON_HAPPINESS_1] Happiness in all Cities.[ENDCOLOR][NEWLINE][ICON_BULLET][COLOR_POSITIVE_TEXT]Cities with Shrine produce +10% [ICON_RESEARCH] Science[ENDCOLOR]', 
        'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_6_HELP' WHERE EXISTS (SELECT * FROM COMMUNITY WHERE Type='CIVICS' AND Value= 0 ) UNION ALL
SELECT  'Theocratic Warrior',
        'TXT_KEY_PROMOTION_DEUSVULT' UNION ALL
SELECT  '+10% [ICON_COMBAT] Combat Strength.',
        'TXT_KEY_PROMOTION_DEUSVULT_HELP';

INSERT INTO Events (Type, Description, Help, EventArt, RandomChance, NumChoices, IgnoresGlobalCooldown)
SELECT  'PLAYER_EVENT_RELIGIONCIVIC', 'TXT_KEY_PLAYER_EVENT_RELIGIONCIVIC_DESCRIPTION', 'TXT_KEY_PLAYER_EVENT_RELIGIONCIVIC_HELP', 'ReligionCivics.dds', -1, 7, 1;

INSERT INTO Event_ParentEvents (EventChoiceType, EventType)
SELECT  'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_1', 'PLAYER_EVENT_RELIGIONCIVIC' UNION ALL
SELECT  'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_7', 'PLAYER_EVENT_RELIGIONCIVIC' UNION ALL
SELECT  'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_2', 'PLAYER_EVENT_RELIGIONCIVIC' UNION ALL
SELECT  'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_3', 'PLAYER_EVENT_RELIGIONCIVIC' UNION ALL
SELECT  'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_4', 'PLAYER_EVENT_RELIGIONCIVIC' UNION ALL
SELECT  'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_5', 'PLAYER_EVENT_RELIGIONCIVIC' UNION ALL
SELECT  'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_6', 'PLAYER_EVENT_RELIGIONCIVIC';

UPDATE EventChoices
SET EventPromotion = 'PROMOTION_DEUSVULT'
WHERE Type = 'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_3';

UPDATE EventChoices
SET EventBuildingClassGlobal = 'BUILDINGCLASS_STATE_ATHEISM'
WHERE Type = 'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_5';

UPDATE EventChoices
SET Expires = 1
WHERE Type = 'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_3';

UPDATE EventChoices
SET Expires = 1
WHERE Type = 'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_5';

INSERT INTO EventChoiceFlavors (EventChoiceType, FlavorType, Flavor)
SELECT 'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_1', 'FLAVOR_GOLD', 15 UNION ALL
SELECT 'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_1', 'FLAVOR_HAPPINESS', 5 UNION ALL
SELECT 'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_7', 'FLAVOR_GOLD', 10 UNION ALL
SELECT 'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_7', 'FLAVOR_CULTURE', 10 UNION ALL
SELECT 'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_7', 'FLAVOR_RELIGION', 10 UNION ALL
SELECT 'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_2', 'FLAVOR_PRODUCTION', 25 UNION ALL
SELECT 'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_2', 'FLAVOR_RELIGION', 30 UNION ALL
SELECT 'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_2', 'FLAVOR_GOLD', 5 UNION ALL
SELECT 'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_3', 'FLAVOR_OFFENSE', 20 UNION ALL
SELECT 'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_3', 'FLAVOR_DEFENSE', 20 UNION ALL
SELECT 'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_3', 'FLAVOR_RELIGION', 10 UNION ALL
SELECT 'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_3', 'FLAVOR_GOLD', 10 UNION ALL
SELECT 'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_4', 'FLAVOR_GOLD', 10 UNION ALL
SELECT 'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_4', 'FLAVOR_OFFENSE', -25 UNION ALL
SELECT 'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_4', 'FLAVOR_GREAT_PEOPLE', 25 UNION ALL
SELECT 'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_5', 'FLAVOR_GOLD', 10 UNION ALL
SELECT 'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_5', 'FLAVOR_CULTURE', 30 UNION ALL
SELECT 'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_5', 'FLAVOR_RELIGION', -30 UNION ALL
SELECT 'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_6', 'FLAVOR_GOLD', 10 UNION ALL
SELECT 'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_6', 'FLAVOR_SCIENCE', 30 UNION ALL
SELECT 'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_6', 'FLAVOR_HAPPINESS', 20;

INSERT INTO BuildingClasses (Type, DefaultBuilding, Description)
SELECT 'BUILDINGCLASS_STATE_ATHEISM', 'BUILDING_STATE_ATHEISM', 'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_5';

INSERT INTO Buildings (Type, Description, BuildingClass, Cost, PrereqTech, ArtDefineTag, MinAreaSize, NeverCapture, NukeImmune, HurryCostModifier, PortraitIndex, IconAtlas, GreatWorkCount, FaithCost, ReligiousPressureModifier)
SELECT 'BUILDING_STATE_ATHEISM', 'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_5', 'BUILDINGCLASS_STATE_ATHEISM', -1, NULL, 'NONE', -1, 'true', 'true', -1, 0, 'CIV_COLOR_ATLAS', -1, -1, -100;

UPDATE Buildings
SET ConversionModifier = -100
WHERE Type = 'BUILDING_STATE_ATHEISM';

INSERT INTO UnitPromotions (Type, Description, Help, Sound, CannotBeChosen, CombatPercent, PortraitIndex, IconAtlas, PediaType, PediaEntry)
SELECT 'PROMOTION_DEUSVULT', 'TXT_KEY_PROMOTION_DEUSVULT', 'TXT_KEY_PROMOTION_DEUSVULT_HELP', 'AS2D_IF_LEVELUP', 1, 10, 59, 'ABILITY_ATLAS', 'PEDIA_SHARED', 'TXT_KEY_PROMOTION_DEUSVULT';

INSERT INTO UnitPromotions_UnitCombats (PromotionType, UnitCombatType)
SELECT 'PROMOTION_DEUSVULT', 'UNITCOMBAT_RECON' UNION ALL
SELECT 'PROMOTION_DEUSVULT', 'UNITCOMBAT_ARCHER' UNION ALL
SELECT 'PROMOTION_DEUSVULT', 'UNITCOMBAT_MOUNTED' UNION ALL
SELECT 'PROMOTION_DEUSVULT', 'UNITCOMBAT_MELEE' UNION ALL
SELECT 'PROMOTION_DEUSVULT', 'UNITCOMBAT_SIEGE' UNION ALL
SELECT 'PROMOTION_DEUSVULT', 'UNITCOMBAT_GUN' UNION ALL
SELECT 'PROMOTION_DEUSVULT', 'UNITCOMBAT_ARMOR' UNION ALL
SELECT 'PROMOTION_DEUSVULT', 'UNITCOMBAT_HELICOPTER' UNION ALL
SELECT 'PROMOTION_DEUSVULT', 'UNITCOMBAT_NAVALMELEE' UNION ALL
SELECT 'PROMOTION_DEUSVULT', 'UNITCOMBAT_NAVALRANGED';
function AtheistChoice(iPlayer, iChoice)
    local pPlayer = Players[iPlayer]
    if iChoice == iStateAtheismChoice then
        pPlayer:RevokePolicy(iStateAtheism)
        pPlayer:SetEventChoiceCooldown(iStateAtheismChoice, 0)
        pPlayer:GrantPolicy(iStateAtheism)
        pPlayer:SetEventChoiceCooldown(iStateAtheismChoice, 1500)
    elseif iChoice == iTheocracyChoice then
        pPlayer:RevokePolicy(iTheocracy)
        pPlayer:SetEventChoiceCooldown(iTheocracyChoice, 0)
        pPlayer:GrantPolicy(iTheocracy)
        pPlayer:SetEventChoiceCooldown(iTheocracyChoice, 1500)
    end
end
GameEvents.EventChoiceActivated.Add(AtheistChoice)

I know religion choice 3 works(which is weird considering they're coded the same) because the promotion disappears after choosing another choice, but not choice 5 with the global buildings

LoneGazebo commented 8 years ago

I don't see an event choice duration.

LoneGazebo commented 8 years ago

If you are comfortable with it, I highly recommend using my SQL database (its on github in the Events Database folder) with something like SQLite Studio. Export to SQL is super easy.

TechpriestEnginseer commented 8 years ago

I forgot to include it in the previous post, but it was already there before you noted it.

INSERT INTO EventChoices (Type, Description, Help, EventDuration, PrereqTech)
SELECT  'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_1', 'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_1', 'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_1_HELP', 1, NULL UNION ALL
SELECT  'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_7', 'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_7', 'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_7_HELP', 1, 'TECH_POTTERY' UNION ALL
SELECT  'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_2', 'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_2', 'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_2_HELP', 1, 'TECH_PHILOSOPHY' UNION ALL
SELECT  'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_3', 'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_3', 'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_3_HELP', 1, 'TECH_THEOLOGY' UNION ALL
SELECT  'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_4', 'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_4', 'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_4_HELP', 1, 'TECH_BIOLOGY' UNION ALL
SELECT  'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_5', 'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_5', 'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_5_HELP', 1, 'TECH_FLIGHT' UNION ALL
SELECT  'PLAYER_EVENT_RELIGIONCIVIC_CHOICE_6', 'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_6', 'TXT_KEY_EVENT_RELIGIONCIVIC_CHOICE_6_HELP', 1, 'TECH_PENICILIN';
LoneGazebo commented 8 years ago

I'm not sure. Once loaded into the database, does it look correct? Like I said, I think that you might have more reliable (and rapid) dev using SQLite Studio.

TechpriestEnginseer commented 8 years ago

Actually, I don't know why it doesn't expire. But since events are theoretically unlimited in numbers, I'll just make an event that'll cancel the buildings. Thanks for helping.

TechpriestEnginseer commented 8 years ago

I've always wondered what this DoCancelEventChoice does and finds out it solves all my problems because just using SetEventChoiceCooldown(0) isn't enough on some of the event columns(some may not update dynamically)

SetEventChoiceCooldown(1) works however because I believe it triggers DoCancelEventChoice.

LoneGazebo commented 8 years ago

That function calls the in game function that clears an event's data.