extends Node # Variables ## Other Data var logic_time = 1 var draw_time = 1 ## Handlers #var encountered_handler = load("res://events/knowledge/Encountered.tscn").instance() #var lost_handler = load("res://events/knowledge/Lost.tscn").instance() #var learned_handler = load("res://events/knowledge/Learned.tscn").instance() #var forgot_handler = load("res://events/knowledge/Forgot.tscn").instance() ## Keys const bingo_knowledge = [] const BINGO_IT4_KEY = "smb001" const BINGO_LVL_KEY = "ml1000" const CHARACTER_CREATION_KEY = "smc001" const ACT_GROUP = ['act100','act200','act001','act002'] # Plastic Tub const IT3_GROUP = ['it3000','it3001','it3002','it3003','it3004'] # Three-Leaf Clover const IT4_GROUP = ['it4000','it4001','it4002','it4003','it4004'] # Four-Leaf Clover const CCB_GROUP = ['ccb000','ccb001','ccb002','ccb003'] # Bad Cat const CCN_GROUP = ['ccn000','ccn001','ccn002','ccn003'] # Neighborhood Cat const CMC_GROUP = ['cmc000','cmc001','cmc002','cmc003'] # Chloe const CMN_GROUP = ['cmn000','cmn001','cmn002','cmn003'] # Night ## Knowledge Base var knowledge = { # code: ["title", "desc", ["tags"], "source", "learned?"] 'a00000': ['teacti', 'teacti', ["term"], "", false], # activator 'ac0000': ['tecont', 'tecont', ["term"], "", false], # container 'act100': ['actubb', 'deactubb', ["activator"], "", false], # blue plastic tub 'act200': ['actubg', 'deactubg', ["activator"], "", false], # green plastic tub 'act001': ['actubb', 'deactubb', ["activator","category"], "", false], # plastic tub category 'act002': ['actubb', 'deactubb', ["activator","subcategory"], "", false], # plastic tub subcategory 'c00000': ['techar', 'techar', ["term"], "", false], # character 'cc0000': ['facata', 'facata', ["faction"], "", false], # cat 'ccn000': ['chneig', 'dechneig', ["character"], "", false], # neighborhood cat 'ccn001': ['tecate', 'techar', ["ccb000","category"], "", true], # neighborhood cat category 'ccn002': ['tefact', 'facata', ["ccb000","faction"], "", false], # neighborhood cat faction 'ccn003': ['tehost', 'teally', ["ccb000","hostility"], "", false], # neighborhood cat hostility 'ccb000': ['chbadc', 'dechbadc', ["character"], "", false], # bad cat 'ccb001': ['tecate', 'techar', ["ccb000","category"], "", true], # bad cat category 'ccb002': ['tefact', 'facata', ["ccb000","faction"], "", false], # bad cat faction 'ccb003': ['tehost', 'tefoea', ["ccb000","hostility"], "", false], # bad cat hostility 'ch0000': ['fahuma', 'fahuma', ["faction"], "", false], # human 'cmc000': ['chchlo', 'dechchlo', ["character"], "", false], # chloe 'cmc001': ['tecate', 'techar', ["cmc000","category"], "", true], # chloe category 'cmc002': ['tefact', 'fashma', ["cmc000","faction"], "", false], # chloe faction 'cmc003': ['tehost', 'teally', ["cmc000","hostility"], "", false], # chloe hostility 'cmn000': ['chnigh', 'dechnigh', ["character"], "", false], # night 'cmn001': ['tecate', 'techar', ["cmc000","category"], "", true], # night category 'cmn002': ['tefact', 'tedoct', ["cmc000","faction"], "", false], # night faction 'cmn003': ['tehost', 'teally', ["cmc000","hostility"], "", false], # night hostility 'cmp001': ['chheli', 'dechheli', ["character"], "", false], # player 'i00000': ['teitem', 'teitem', ["term"], "", false], # item 'it0000': ['ictrin', 'ictrin', ["item_category"], "", false], # item 'it3000': ['it3lea', 'deit3lea', ["item"], "", false], # three-leaf clover 'it3001': ['tecate', 'caitem', ["it3000","category"], "", true], # three-leaf clover category 'it3002': ['tesubc', 'ictrin', ["it3000","subcategory"], "", false], # three-leaf clover subcategory 'it3003': ['terari', 'irmund', ["it3000","rarity"], "", false], # three-leaf clover rarity 'it3004': ['tevalu', 'tevalu', ["it3000","value"], "", false], # three-leaf clover value 'it4000': ['it4lea', 'deit4lea', ["item"], "", false], # four-leaf clover 'it4001': ['tecate', 'caitem', ["it4000","category"], "", true], # four-leaf clover category 'it4002': ['tesubc', 'ictrin', ["it4000","subcategory"], "", false], # four-leaf clover subcategory 'it4003': ['terari', 'irrare', ["it4000","rarity"], "", false], # four-leaf clover rarity 'it4004': ['tevalu', 'tevalu', ["it4000","value"], "", false], # four-leaf clover value 'ml0000': ['techlv', 'techlv', ["term"], "", true], # level 'ml1000': ['techle', 'techle', ["techlv"], "", false], # level 1 'sm0000': ['wogati', 'wogati', ["term"], "", false], # main story 'smb000': ['evmibi', 'evmibi', ['sm0000'], "", false], # bingo 'smb001': ['it4lea', 'deit4lea', ['smb001'], "", false], # bingo - four-leaf clover pickup 'smc000': ['evchcr', 'evchcr', ["sm0000"], "", false], # character creation 'smc001': ['evchcr', 'evchcr', ["smc000"], "", false] # character created } func learn(new_content): knowledge[new_content[0]][3] = new_content[1] # set source knowledge[new_content[0]][4] = true # set knowledge as learned MessageBus.publish("learned", new_content[0]) # reap benefits func forget(old_content): print_debug("KnowledgeBase: Forgetting " + old_content) knowledge[old_content][4] = false # set knowledge as learned MessageBus.publish("forgot", old_content) # reap benefits func do_know(key): #print_debug(key + " is " + str(knowledge[key][4])) return knowledge[key][4] func has_tag(key,tag): return tag in knowledge[key][2] # Ready func _ready(): return # add_child(learned_handler) # add_child(forgot_handler) # add_child(encountered_handler) # MessageBus.subscribe("learned", learned_handler) # MessageBus.subscribe("forgot", lost_handler) # MessageBus.subscribe("encountered", encountered_handler) # Serialize func serialize(): return knowledge # Deserialize func deserialize(dict): knowledge = dict