coyote hunt
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
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
|
||||
@@ -0,0 +1,82 @@
|
||||
extends Node
|
||||
|
||||
# Message Bus
|
||||
|
||||
# Signals
|
||||
#signal published()
|
||||
|
||||
# Variables
|
||||
#var Mercur = load("res://entity/Mercur/Mercur.tscn").instance() # mail god
|
||||
var current_ref_id = -1
|
||||
var topicDict = {}
|
||||
var approached_topic = "approached"
|
||||
#var approached_handler = load("res://Events/approached/Approach.tscn").instance()
|
||||
var died_topic = "died"
|
||||
#var died_handler = load("res://Events/died/Died.tscn").instance()
|
||||
var duration = "duration"
|
||||
var earned_xp_topic = "xp_earned"
|
||||
#var earned_xp_handler = load("res://Events/xp_changed/EarnedXP.tscn").instance()
|
||||
var equipped_skill_topic = "skill_equipped"
|
||||
#var equipped_skill_handler = load("res://Events/skill_equipped/EquipSkill.tscn").instance()
|
||||
var gained_level_topic = "level_gained"
|
||||
#var gained_level_handler = load("res://Events/xp_changed/GainLevel.tscn").instance()
|
||||
var interacted_topic = "interacted"
|
||||
#var interacted_handler = load("res://Events/character_interacted/Interact.tscn").instance()
|
||||
var item_picked_up_topic = "item_picked_up"
|
||||
#var learned_item_handler = load("res://Events/item_picked_up/LearnItem/LearnItem.tscn").instance()
|
||||
var learned_skill_topic = "skill_learned"
|
||||
#var learned_skill_handler = load("res://Events/skill_learned/LearnSkill.tscn").instance()
|
||||
var moved_handler = load("res://events/moved/Char.tscn").instance()
|
||||
var moved_topic = "moved"
|
||||
|
||||
func designate_ref_id():
|
||||
current_ref_id += 1
|
||||
return current_ref_id
|
||||
|
||||
# Take data + hand off to Event Handlers subscribed to event
|
||||
func publish(topic, data):
|
||||
if !topicDict.has(topic):
|
||||
# print_debug("publish - unknown topic: " + topic)
|
||||
return
|
||||
for handler in topicDict[topic]:
|
||||
handler.handle(data)
|
||||
|
||||
# Handler begins listening for topic
|
||||
func subscribe(topic, handler):
|
||||
if !topicDict.has(topic):
|
||||
# print_debug("subscribe - new topic: " + topic)
|
||||
topicDict[topic] = []
|
||||
#return
|
||||
topicDict[topic].append(handler)
|
||||
handler.connect("tree_exited", self, "_on_handler_tree_exited", [topic, handler])
|
||||
|
||||
# Handler no longer listens for topic
|
||||
func unsubscribe(topic, handler):
|
||||
if !topicDict.has(topic):
|
||||
# print_debug("Cannot unsubscribe handler that does not exist")
|
||||
return
|
||||
topicDict[topic].erase(handler)
|
||||
|
||||
func _on_handler_tree_exited(topic, handler):
|
||||
unsubscribe(topic, handler)
|
||||
|
||||
# if this character exits tree
|
||||
func _on_tree_exited():
|
||||
#unsubscribe(died_topic, died_handler)
|
||||
#unsubscribe(earned_xp_topic, earned_xp_handler)
|
||||
#unsubscribe(gained_level_topic, gained_level_handler)
|
||||
#subscribe(gained_level_topic, gained_level_handler)
|
||||
#unsubscribe(item_picked_up_topic, learned_item_handler)
|
||||
#unsubscribe(learned_skill_topic, learned_skill_handler)
|
||||
unsubscribe(moved_topic, moved_handler)
|
||||
|
||||
func _ready():
|
||||
#subscribe(died_topic, died_handler)
|
||||
#subscribe(earned_xp_topic, earned_xp_handler)
|
||||
#subscribe(gained_level_topic, gained_level_handler)
|
||||
#subscribe(interacted_topic, interacted_handler)
|
||||
#subscribe(item_picked_up_topic, learned_item_handler)
|
||||
#subscribe(learned_skill_topic, learned_skill_handler)
|
||||
subscribe(moved_topic, moved_handler)
|
||||
# connect("tree_exited", self, "_on_tree_exited")
|
||||
|
||||
Reference in New Issue
Block a user