예제 #1
0
파일: cure_enablers.py 프로젝트: AKJ/sage
def cure_enablers_goldenseal(line, time, backrefs):
	player.afflictions['anorexia'] = False
	player.stunned = False
	player.afflictions['amnesia'] = False
	player.ate['goldenseal'] = True
	player.herb_balance = 0
	player.herb_lastate = time
	player.waiting_for_aeon = 0
	herbs.goldenseal.inv -= 1
	core.enable_trigger('failure_eat_offbal', 'failures')
	core.triggers_pending_disable.append(['failure_eat_offbal', 'failures'])
	core.triggers_pending_disable.append(['failure_goldenseal_insomnia', 'failures'])
	core.disable_trigger('cure_enablers_goldenseal', 'cure_enablers')
	core.disable_trigger('failure_eating', 'failures')
	core.disable_trigger('failure_eating_anorexia', 'failures')
	core.disable_trigger('failure_eating_mickey', 'failures')
	enable = (
		'dizziness',
		'epilepsy',
		'impatience',
		'shyness',
		'stupidity',
		'insomnia'
	)
	_enable_cure_triggers(enable)
	core.call_later(core.config['herb_balance_delay'], _enable_herb_balance)
예제 #2
0
파일: cure_enablers.py 프로젝트: AKJ/sage
def cure_enablers_ginseng(line, time, backrefs):
	player.afflictions['anorexia'] = False
	player.afflictions['amnesia'] = False
	player.stunned = False
	player.ate['ginseng'] = True
	player.herb_balance = 0
	player.herb_lastate = time
	herbs.ginseng.inv -= 1
	player.waiting_for_aeon = 0
	core.enable_trigger('failure_eat_offbal', 'failures')
	core.triggers_pending_disable.append(['failure_eat_offbal', 'failures'])
	core.disable_trigger('cure_enablers_ginseng', 'cure_enablers')
	core.disable_trigger('failure_eating', 'failures')
	core.disable_trigger('failure_eating_anorexia', 'failures')
	core.disable_trigger('failure_eating_mickey', 'failures')
	enable = (
		'addiction',
		'darkshade',
		'haemophilia',
		'lethargy',
		'scytherus',
		'nausea'
	)
	_enable_cure_triggers(enable)
	core.call_later(core.config['herb_balance_delay'], _enable_herb_balance)
예제 #3
0
파일: cure_enablers.py 프로젝트: AKJ/sage
def cure_enablers_kelp(line, time, backrefs):
	player.afflictions['anorexia'] = False
	player.stunned = False
	player.afflictions['amnesia'] = False
	player.ate['kelp'] = True
	player.herb_balance = 0
	player.herb_lastate = time
	player.waiting_for_aeon = 0
	herbs.kelp.inv -= 1
	core.enable_trigger('failure_eat_offbal', 'failures')
	core.triggers_pending_disable.append(['failure_eat_offbal', 'failures'])
	core.disable_trigger('cure_enablers_kelp', 'cure_enablers')
	core.disable_trigger('failure_eating', 'failures')
	core.disable_trigger('failure_eating_anorexia', 'failures')
	core.disable_trigger('failure_eating_mickey', 'failures')
	enable = (
		'asthma',
		'clumsiness',
		'healthleech',
		'hypochondria',
		'sensitivity',
		'weariness'
	)
	_enable_cure_triggers(enable)
	core.call_later(core.config['herb_balance_delay'], _enable_herb_balance)
예제 #4
0
파일: herbs.py 프로젝트: AKJ/sage
	def eat(self):
		if self.inv > 0:
			core.write('eat ' + self.name)
		else:
			core.enable_trigger('herbs_outp', 'herbs')
			core.write('outp ' + self.name)
			core.write('eat ' + self.name)
예제 #5
0
파일: balances.py 프로젝트: AKJ/sage
def sileris_balance(line, time, backrefs):
	player.waiting_for_sileris = 1
	player.sileris_last = time
	herbs.herbs['sileris'].inv -= 1
	core.disable_trigger('sileris_balance', 'balances')
	core.disable_trigger('failure_sileris_slickness', 'failures')
	core.enable_trigger('ondef_sileris', 'ondef')
예제 #6
0
파일: events.py 프로젝트: AKJ/sage
def writhe_event(now):
	if queues.writhe_queue.is_empty() == False:
		if player.afflictions['sleep'] or \
		player.stunned or \
		player.afflictions['amnesia']:
			return

		# have to be on balance to writhe from impale
		if player.afflictions['impale'] and player.balance is False:
			return

		if player.writhe_balance == 1:
			core.enable_trigger('failure_writhe', 'failures')
			enable = (
				'impale',
				'webbed_roped',
				'transfixed',
				#'bound'
			)

			#if player.combat_class.lower() == 'bard':
			#	enable.append('dwinnu')

			for trigger in enable:
				core.enable_trigger('cure_enablers_' + trigger, 'cure_enablers')
			core.write(queues.writhe_queue.fire())
			player.writhe_balance = .5
			player.writhe_lastfire = now
		elif player.writhe_balance == .5:
			if now - player.writhe_lastfire > 2:
				player.writhe_balance = 1 # just a catchall
		elif player.writhe_balance == 0:
			if now - player.writhe_lastfire > 8:
				player.writhe_balance = 1
예제 #7
0
파일: clotting.py 프로젝트: AKJ/sage
def bleed(line, time, backrefs):
	if core.is_paused() \
	or core.aeon_mode:
		return

	bleed = int(backrefs[0])

	if bleed >= player.max_health:
		return

	global clotting, clot_num
	if player.afflictions['haemophilia'] or \
	player.afflictions['aeon'] or \
	player.afflictions['sleep'] or \
	player.stunned:
		return


	clots = (bleed - 61) / 20
	mana_cost = clots * 60

	h = player.health_percentage / 100.0
	m = (player.mana - mana_cost) / float(player.max_mana)
	d = (bleed / float(player.max_health)) * 5

	clot_factor = 1 / (1 + exp((-(m * 2.5) + (h / 2.0) + 1) * (5 - d)))

	num_clots = round(clot_factor * clots)

	if num_clots > 0:
		clotting = True
		clot_num = num_clots - 1
		core.enable_trigger('clot_tick', 'general_afflictions')
		core.enable_trigger('no_clot', 'general_afflictions')
		core.write('clot', int(num_clots))
예제 #8
0
파일: cure_functions.py 프로젝트: AKJ/sage
def restore_handling(line, time, backrefs):
	broken = ['cures_leftarm_lvl1', 'cures_rightarm_lvl1', 'cures_leftleg_lvl1', 'cures_rightleg_lvl1']
	if player.restoring is True:
		for broke in broken:
			core.enable_trigger(broke, 'cures')
	core.disable_trigger('survival_restoration', 'survival')
	player.restoring = False
예제 #9
0
파일: events.py 프로젝트: AKJ/sage
def focus_event(now):
	if player.ableto_focus is False \
	or player.allow_focus is False:
		return

	if now - player.focus_lastfire > 3:
		player.focus_balance = 1

	if player.focus_balance == 1:
		if player.fire_focus:
			if player.afflictions['sleep'] \
			or player.stunned \
			or (player.afflictions['impatience'] == True and player.focus_on_impatience == False) \
			or player.afflictions['amnesia']:
				return

			core.enable_trigger('survival_focusing', 'survival')
			player.focus_balance = .5
			player.focus_lastfire = now
			core.write('focus')
	elif player.focus_balance == .5:
		if now - player.focus_lastfire > .5:
			player.focus_balance = 1
	elif player.focus_balance == 0:
		if now - player.focus_lastfire > 3:
			player.focus_balance = 1
	core.enable_trigger('failure_focus_offbal', 'failures')
예제 #10
0
파일: events.py 프로젝트: AKJ/sage
def sileris_event(now):
	player.sileris_event_last = now
	if player.keepup['sileris']:
		if player.afflictions['slickness'] \
		or player.afflictions['sleep'] \
		or player.stunned \
		or player.afflictions['amnesia']:
			return

		if player.defences['sileris'] != 1 \
		and player.waiting_for_sileris == 1:
			if now - player.sileris_last > 5.6 + player.latency:
				if player.multi_flay:
					player.waiting_for_sileris = 0
					player.defences['sileris'] = 1
					player.multi_flay = False
				else:
					player.waiting_for_sileris = 0
					player.defences['sileris'] = 0

		if player.defences['sileris'] == 0 \
		and player.waiting_for_sileris == 0:
			if herbs.herbs['sileris'].inv <= 0:
				if player.is_hindered() is False and player.can_outr():
					if now - player.sileris_lastoutr > 1:
						player.sileris_lastoutr = now
						herbs.herbs['sileris'].outr()
			else:
				core.enable_trigger('sileris_balance', 'balances')
				core.enable_trigger('failure_sileris_slickness', 'failures')
				player.waiting_for_sileris = .5
				core.write('apply sileris')
예제 #11
0
파일: cure_enablers.py 프로젝트: AKJ/sage
def cure_enablers_lobelia(line, time, backrefs):
	player.afflictions['anorexia'] = False
	player.stunned = False
	player.afflictions['amnesia'] = False
	player.ate['lobelia'] = True
	player.herb_balance = 0
	player.herb_lastate = time
	player.waiting_for_aeon = 0
	herbs.lobelia.inv -= 1
	core.enable_trigger('failure_eat_offbal', 'failures')
	core.triggers_pending_disable.append(['failure_eat_offbal', 'failures'])
	core.disable_trigger('cure_enablers_lobelia', 'cure_enablers')
	core.disable_trigger('failure_eating', 'failures')
	core.disable_trigger('failure_eating_anorexia', 'failures')
	core.disable_trigger('failure_eating_mickey', 'failures')
	enable = (
		'agoraphobia',
		'claustrophobia',
		'loneliness',
		'masochism',
		'reckless',
		'vertigo'
	)
	_enable_cure_triggers(enable)
	core.call_later(core.config['herb_balance_delay'], _enable_herb_balance)
예제 #12
0
파일: blackout.py 프로젝트: AKJ/sage
def bcure(cure):
	now = time.time()

	core.debug("registering blackout cure " + cure)

	player.waiting_for_aeon = 0

	if player.fire_focus and player.focus_balance == .5:
		core.debug("fired focus in blackout")
		player.fire_focus = False
		player.focus_balance = 0
		player.actions['focus'] = True
		core.enable_trigger('focus_balance', 'balances')

	ate = False
	for herb in player.blackout_ate:
		if player.blackout_ate[herb] == True:
			ate = True
			ate_herb = herb
			core.debug("Ate " + ate_herb + " in blackout")
			player.blackout_ate[herb] = False

	if ate:
		player.herb_balance = 0
		player.herb_lastate = now
		player.ate[ate_herb] = True
		herbs.herbs[ate_herb].inv -= 1

	cures.cure(cure)
예제 #13
0
def focus(line, time, backrefs):
	player.fire_focus = True
	if player.focus_balance == 1:
		core.write('focus')
		core.enable_trigger('survival_focusing', 'survival')
		core.enable_trigger('failure_focus_offbal', 'failures')
		player.focus_balance = 0.5
		player.focus_lastfire = time
예제 #14
0
def toggle_vault(line, time, backrefs):
	if player.keepup['riding']:
		player.keepup['riding'] = False
		free_queue.add('riding', 'dismount;order ' + player.mount + ' follow me')
		action_queue.remove_by_name('riding')
	else:
		player.keepup['riding'] = True
		core.enable_trigger('ondef_riding', 'ondef')
	input.run_events(time)
예제 #15
0
파일: cure_enablers.py 프로젝트: AKJ/sage
def cure_enablers_moss_2(line, time, backrefs):
	player.moss_balance = 0
	player.moss_lastfire = time
	core.enable_trigger('moss_balance', 'balances')
	core.disable_trigger('cure_enablers_moss', 'cure_enablers')
	core.disable_trigger('failure_moss', 'failures')
	core.disable_trigger('failure_eating', 'failures')
	core.disable_trigger('failure_eating_anorexia', 'failures')
	core.disable_trigger('failure_eating_mickey', 'failures')
예제 #16
0
파일: cure_enablers.py 프로젝트: AKJ/sage
def cure_enablers_elixirs(line, time, backrefs):
	player.afflictions['anorexia'] = False
	player.stunned = False
	player.afflictions['amnesia'] = False
	player.actions['asip'] = True
	player.asip_balance = 0
	player.waiting_for_aeon = 0
	core.disable_trigger('cure_enablers_elixirs', 'cure_enablers')
	core.enable_trigger('asip_balance', 'balances')
예제 #17
0
파일: clotting.py 프로젝트: AKJ/sage
def preempt_clot(line, time, backrefs):
	global auto_clotting
	if core.is_paused() \
	or core.aeon_mode:
		return

	if player.mana_percentage > 55 and player.afflictions['haemophilia'] is False and player.afflictions['aeon'] is False:
		core.enable_trigger('clot_tick', 'general_afflictions')
		core.enable_trigger('no_clot', 'general_afflictions')
		auto_clotting = True
		core.write('clot')
예제 #18
0
파일: cure_enablers.py 프로젝트: AKJ/sage
def cure_enablers_moss(line, time, backrefs):
	player.afflictions['anorexia'] = False
	player.stunned = False
	player.afflictions['amnesia'] = False
	player.moss_balance = 0
	player.waiting_for_aeon = 0
	herbs.moss.inv -= 1
	core.disable_trigger('cure_enablers_moss', 'cure_enablers')
	core.enable_trigger('moss_balance', 'balances')
	core.disable_trigger('failure_eating_anorexia', 'failures')
	core.disable_trigger('failure_eating_mickey', 'failures')
예제 #19
0
def toggle_heartseed(line, time, backrefs):
	if player.allow_heartseed:
		core.echo("Disabling Heartseed Trigger for 5 Minutes")
		player.allow_heartseed = False
		core.disable_trigger('elementalism_heartseed', 'elementalism')
		player.heartseed_timer = Timer(300, reenable_heartseed)
		player.heartseed_timer.start()
	else:
		core.echo("Enabling Heartseed Trigger")
		player.allow_heartseed = True
		player.heartseed_timer.cancel()
		core.enable_trigger('elementalism_heartseed', 'elementalism')
예제 #20
0
파일: balances.py 프로젝트: AKJ/sage
def focus(line, time, backrefs):
	core.disable_trigger('survival_focusing', 'survival')
	core.disable_trigger('failure_focus_offbal', 'failures')
	core.enable_trigger('focus_balance', 'balances')
	cures.enable_focusable_cures()
	player.focus_balance = 0
	player.waiting_for_aeon = 0
	player.focus_lastfire = time
	player.fire_focus = False
	player.actions['focus'] = True
	player.focus_on_impatience = False
	player.afflictions['impatience'] = False
예제 #21
0
파일: cure_enablers.py 프로젝트: AKJ/sage
def cure_enablers_kola(line, time, backrefs):
	player.afflictions['anorexia'] = False
	player.stunned = False
	player.afflictions['amnesia'] = False
	player.ate['kola'] = True
	herbs.kola.inv -= 1
	player.waiting_for_aeon = 0
	# kola doesn't take herb balance
	core.disable_trigger('cure_enablers_kola', 'cure_enablers')
	core.disable_trigger('failure_eating', 'failures')
	core.disable_trigger('failure_eating_anorexia', 'failures')
	core.disable_trigger('failure_eating_mickey', 'failures')
	core.enable_trigger('ondef_kola', 'ondef')
예제 #22
0
파일: cure_enablers.py 프로젝트: AKJ/sage
def cure_enablers_skullcap(line, time, backrefs):
	player.afflictions['anorexia'] = False
	player.stunned = False
	player.afflictions['amnesia'] = False
	player.ate['skullcap'] = True
	herbs.skullcap.inv -= 1
	player.waiting_for_aeon = 0
	# skullcap doesn't take herb balance
	core.disable_trigger('cure_enablers_skullcap', 'cure_enablers')
	core.disable_trigger('failure_eating', 'failures')
	core.disable_trigger('failure_eating_anorexia', 'failures')
	core.disable_trigger('failure_eating_mickey', 'failures')
	core.enable_trigger('ondef_deathsight', 'ondef')
예제 #23
0
파일: events.py 프로젝트: AKJ/sage
def smoke_event(now):
	'''
	Thoughts...
	Wouldn't it be cool if pipes were completely independent of eachother?
	That each pipe had its own tracking, handling, firing, and reloading?
	A pipe class with each pipe being an instance of? It would...
	'''

	if queues.smoke_queue.is_empty() == False:
		if now - queues.smoke_queue.lastfire > player.latency:
			if player.afflictions['asthma'] is False and \
				player.afflictions['sleep'] is False and \
				player.stunned is False and \
				player.afflictions['amnesia'] is False:
					pipe = queues.smoke_queue.fire()
					smoke = False
					player.puffs.append(pipe)
					if pipe == 'elm' \
					and (player.elm_lit or player.arty_elm):
						smoke = player.elm_pipe
					elif pipe == 'valerian' \
					and (player.valerian_lit or player.arty_valerian):
						smoke = player.valerian_pipe
					elif pipe == 'skullcap' \
					and (player.skullcap_lit or player.arty_skullcap):
						if player.skullcap_puffs <= 0:
							return
						smoke = player.skullcap_pipe
					if smoke:
						core.enable_trigger('smoke_puff', 'balances')
						core.enable_trigger('failure_smoking', 'failures')
						core.enable_trigger('failure_asthma_smoking', 'failures')
						core.enable_trigger('failure_pipe_out', 'failures')
						core.write('smoke ' + smoke)
예제 #24
0
파일: smoking.py 프로젝트: AKJ/sage
def smoke_puff(line, time, backrefs):
	player.afflictions['asthma'] = False
	core.call_later(1, _disable_smokepuff_trigger)
	core.disable_trigger('failure_smoking', 'failures')
	core.disable_trigger('failure_asthma_smoking', 'failures')
	core.disable_trigger('failure_pipe_out', 'failures')
	player.actions['smoke'] = True
	player.waiting_for_aeon = 0
	if len(player.puffs) > 0:
		pipe = player.puffs.pop()
		if pipe == 'elm':
			player.elm_puffs = player.elm_puffs - 1
			player.elm_lastfire = time
			smoke_queue.remove_by_name('elm')
			cures = (
				'aeon',
				'deadening',
				'hellsight',
				'madness'
			)
			_enable_cure_triggers(cures)
			if player.pipe_reloading == 'elm':
				core.line = core.line + ansi.colorize("[grey] ([magenta]purging elm[grey])[]")
			else:
				core.line = core.line + ansi.color['grey'] + " (" + str(player.elm_puffs) + " elm)" + ansi.color['default']
		elif pipe == 'skullcap':
			core.enable_trigger('failure_rebounding', 'failures')
			player.skullcap_puffs = player.skullcap_puffs - 1
			player.skullcap_lastfire = time
			smoke_queue.remove_by_name('skullcap')
			smoke_queue.remove_by_name('rebounding')
			player.rebounding_pending = True
			if player.pipe_reloading == 'skullcap':
				core.line = core.line + ansi.colorize("[grey] ([magenta]purging skullcap[grey])[]")
			else:
				core.line = core.line + ansi.color['grey'] + " (" + str(player.skullcap_puffs) + " skullcap)" + ansi.color['default']
		elif pipe == 'valerian':
			player.valerian_puffs = player.valerian_puffs - 1
			player.valerian_lastfire = time
			smoke_queue.remove_by_name('valerian')
			cures = (
				'disfigurement',
				'manaleech',
				'slickness'
			)
			_enable_cure_triggers(cures)
			if player.pipe_reloading == 'valerian':
				core.line = core.line + ansi.colorize("[grey] ([magenta]purging valerian[grey])[]")
			else:
				core.line = core.line + ansi.color['grey'] + " (" + str(player.valerian_puffs) + " valerian)" + ansi.color['default']
예제 #25
0
def simultaneity(line, time, backrefs):
	if player.combat_class not in ('magi', 'priest'):
		return

	core.enable_trigger('ondef_air', 'ondef')
	core.enable_trigger('ondef_water', 'ondef')
	core.enable_trigger('ondef_fire', 'ondef')
	core.enable_trigger('ondef_earth', 'ondef')

	if player.combat_class == 'priest':
		core.enable_trigger('ondef_spirit', 'ondef')
	action_queue.add('simultaneity', 'simultaneity', 387)

	input.run_events(time)
예제 #26
0
파일: weaponry.py 프로젝트: AKJ/sage
def shatter_strike(line, time, backrefs):
	triggers = (
		'limb_breaks_leftarm_lvl2',
		'limb_breaks_leftarm_lvl3',
		'limb_breaks_rightarm_lvl2',
		'limb_breaks_rightarm_lvl3',
		'limb_breaks_leftleg_lvl2',
		'limb_breaks_leftleg_lvl3',
		'limb_breaks_rightleg_lvl2',
		'limb_breaks_rightleg_lvl3',
	)
	for trigger in triggers:
		core.enable_trigger(trigger, 'limb_breaks')

	cures.ai['delta_check'] = True
예제 #27
0
파일: parrying.py 프로젝트: AKJ/sage
def parry_regex_blademaster(line, time, backrefs):
	if cures.lifevision:
		return

	if 'right' in backrefs:
		if 'legs' in line:
			parry.strike('right leg')
		elif 'arms' in line:
			parry.strike('right arm')
	elif 'left' in backrefs:
		if 'legs' in line:
			parry.strike('left leg')
		elif 'arms' in line:
			parry.strike('left arm')
	core.enable_trigger('parrying_parry_message', 'parrying')
예제 #28
0
def toggle_retardation_mode(line, time, backrefs):
	if core.retardation_mode:
		core.disable_alias('retardation_cure', 'sage_internal_commands')
		core.disable_alias('retardation_autocure', 'sage_internal_commands')
		core.enable_trigger('symptoms_aeon', 'symptoms')
		core.echo("Disabling retardation mode")
		core.retardation_mode = False
		core.aeon_mode = False
	else:
		core.enable_alias('retardation_autocure', 'sage_internal_commands')
		core.enable_alias('retardation_cure', 'sage_internal_commands')
		core.disable_trigger('symptoms_aeon', 'symptoms')
		core.echo("Enabling retardation aeon mode")
		core.retardation_mode = True
		core.aeon_mode = True
예제 #29
0
파일: parrying.py 프로젝트: AKJ/sage
def parry_compass_slash(line, time, backrefs):
	if cures.lifevision:
		return

	if backrefs[0] == 'northern':
		parry.strike('head')
	elif backrefs[0] == 'southern':
		parry.strike('torso')
	elif backrefs[0] == 'southwestern':
		parry.strike('right leg')
	elif backrefs[0] == 'southeastern':
		parry.strike('left leg')
	elif backrefs[0] == 'western':
		parry.strike('right arm')
	elif backrefs[0] == 'eastern':
		parry.strike('left arm')
	core.enable_trigger('parrying_parry_message', 'parrying')
예제 #30
0
파일: parrying.py 프로젝트: AKJ/sage
def parry_regex_strike(line, time, backrefs):
	if cures.lifevision:
		return

	if 'right arm' in backrefs:
		parry.strike('right arm')
	elif 'left arm' in backrefs:
		parry.strike('left arm')
	elif 'right leg' in backrefs:
		parry.strike('right leg')
	elif 'left leg' in backrefs:
		parry.strike('left leg')
	elif 'head' in backrefs:
		parry.strike('head')
	elif 'torso' in backrefs:
		parry.strike('torso')
	core.enable_trigger('parrying_parry_message', 'parrying')