Date: 2019/02/17 22:36:39 UTC-08:00
Type: Denizen Script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
DamageListener:
type: world
debug: false
events:
on entity damages entity:
- if <context.damager> == <server.match_player[behr]>:
- define Spell "Fire Surge"
- narrate <context.cause>
- define damage <proc[DamageProc].context[<context.damager>|<context.entity>|<context.cause>|<def[Spell]||null>]>
- determine <def[damage]>
- if !<context.entity.has_flag[smacked]>:
- define vector <context.entity.location.sub[<context.damager.location>].normalize.mul[0.5]>
- adjust <context.entity> velocity:<def[vector].x>,0.3,<def[vector].z>
- flag <context.entity> smacked duration:0.45s
DamageProc:
type: procedure
debug: true
definitions: EntityA|EntityB|Style|Spell
script:
#██ Melee
- if <def[style].contains_any[ENTITY_ATTACK|ENTITY_SWEEP_ATTACK]> && !<def[style].contains[MAGIC]>:
#██ Define Entity [A] {AttackLvl}||{StrengthLvl}||{AttackBonus}||{StrengthBonus}||{Max Hit}
- define Attack <def[EntityA].flag[Attacklevel]||1>
- define Strength <def[EntityA].flag[Strengthlevel]||1>
- define AttackBonus <def[EntityA].flag[Attackbonus]||0>
- define StrengthBonus <def[EntityA].flag[Strengthbonus]||0>
- define MaxHit <def[Strength].add[3].mul[<def[Strengthbonus].add[64]>].div[640].add[0.5].round_down>
#██ Define Entity [A] {Attack Roll}||{Maximum Effective Level}||{Maximum Effective Base}
- define AttackRoll <def[Attack].add[3].mul[<def[Attackbonus].add[64]>]>
- define MaxEffectiveLevelA <def[Attackroll].sub[<el@11.mul[<def[Attackbonus]>]>].sub[704].div[<def[Attackbonus].add[64]>]>
- define MaxEffectiveBonusA <def[Attack].mul[-64].add[<def[Attackroll]>].sub[704].div[<def[Attack].add[11]>]>
#██ Define Entity [B] {Defense Roll}||{Defense Bonus / Equipment Bonus}||{Defense Roll}
- define Defense <def[EntityB].flag[DefenseLevel]||1>
- define DefenseBonus <def[EntityB].flag[DefenseBonus]||0>
- define DefenseRoll <def[Defense].mul[<def[DefenseBonus].add[64]>]>
#██ Define Entity [A] {Accuracy}||{Hit}
- define Accuracy <Tern[<def[AttackRoll].is[MORE].than[<def[DefenseRoll]>]>:]:<el@1.sub[<def[DefenseRoll].add[2].div[<el@2.mul[<def[AttackRoll].add[1]>]>]>]>||<def[AttackRoll].div[<def[DefenseRoll].add[1].mul[2]>]>>
- define Hit <util.random.decimal.is[LESS].than[<def[Accuracy]>]>
#██ Define {Damage}
- define damage 0
- define damage <def[Damage].add[<tern[<def[Hit]>]:<util.random.int[1].to[<def[MaxHit]>]>||0>]>
- determine <def[Damage]>
- queue clear
#██ Ranged
- if <def[style].contains_any[PROJECTILE]>:
- define Ranged <def[EntityA].flag[Rangedlevel]||1>
- define RangedBonus <def[EntityA].flag[RangedBonus]||0>
- define MaxHit <def[Strength].add[3].mul[<def[RangedBonus].add[64]>].div[640].add[0.5].round_down>
- queue clear
#██ Magic
- if <def[style].contains_any[MAGIC]> && <def[Spell]> != Null:
#██ Define Entity [A] {MagicLvl}||{MagicBonus}||{MagicStrength}||{Max Hit}
- define Magic <def[EntityA].flag[MagicLevel]||1>
- define MagicBonus <def[EntityA].flag[MagicBonus]||0>
- define MagicStrength <def[EntityA].flag[MagicStrength]||0>
- define MaxHit <script.yaml_key[Spell.<def[Spell]>].mul[<el@1.add[<def[MagicStrength]>]>]||1>
#██ Define Entity [A] {Attack Roll}||{Maximum Effective Level}||{Maximum Effective Base}
- define AttackRoll <def[Magic].add[3].mul[<def[MagicBonus].add[64]>]>
- define MaxEffectiveLevelA <def[Attackroll].sub[<el@11.mul[<def[MagicBonus]>]>].sub[704].div[<def[MagicBonus].add[64]>]>
- define MaxEffectiveBonusA <def[Magic].mul[-64].add[<def[Attackroll]>].sub[704].div[<def[Magic].add[11]>]>
#██ Define Entity [B] {MagicLvl}||{Defense Roll}||{Defense Bonus / Equipment Bonus}||{Defense Roll}
- define MagicB <def[EntityB].flag[MagicLevel]||1>
- define Defense <def[EntityB].flag[DefenseLevel]||1>
- define DefenseBonus <def[EntityB].flag[DefenseBonus]||0>
- define DefenseRoll <def[MagicB].mul[0.3].add[<def[Defense].mul[0.7]>].mul[<def[DefenseBonus].add[64]>]>
#██ Define Entity [A] {Accuracy}||{Hit}
- define Accuracy <Tern[<def[AttackRoll].is[MORE].than[<def[DefenseRoll]>]>:]:<el@1.sub[<def[DefenseRoll].add[2].div[<el@2.mul[<def[AttackRoll].add[1]>]>]>]>||<def[AttackRoll].div[<def[DefenseRoll].add[1].mul[2]>]>>
- define Hit <util.random.decimal.is[LESS].than[<def[Accuracy]>]>
#██ Define {Damage}
- define damage 0
- define damage <def[Damage].add[<tern[<def[Hit]>]:<util.random.int[1].to[<def[MaxHit]>]>||0>]>
- determine <def[Damage]>
Spell:
"Air Strike": 2
"Water Strike": 4
"Vex Strike": 6
"Fire Strike": 8
"Air Bolt": 9
"Water Bolt": 10
"Fraility": 11
"Leech": 12
"Fire Bolt": 12
"Crumble undead": 15
"Wind Blast": 13
"Water Blast": 14
"Decrepify": 15
"Iban Blast": 25
#"Magic Dart": 10-19
"Fire Blast": 16
"Wind Wave": 17
"Water Wave": 18
"vexsomething": 19
"Fire Wave": 20
"Wind Surge": 21
"Water Surge": 22
"vexsomething": 23
"Fire Surge": 24