Date: 2019/02/20 01:25: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
DamageProc:
type: procedure
debug: true
definitions: EntityA|EntityB|Style|Spell
script:
#██ Melee
- if <def[style].contains_any[ENTITY_ATTACK|ENTITY_SWEEP_ATTACK]>:
#██ 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 Entity [A] {RangedLvl}||{RangedBonus}||{Max Hit}
- define Ranged <def[EntityA].flag[Rangedlevel]||1>
- define RangedBonus <def[EntityA].flag[RangedBonus]||0>
- define MaxHit <def[Ranged].add[3].mul[<def[RangedStrength].mul[<el@1.add[<def[RangedStrength]>]>]>]||1>
#██ Define Entity [A] {Attack Roll}||{Maximum Effective Level}||{Maximum Effective Base}
- define AttackRoll <def[ranged].add[3].mul[<def[rangedbonus].add[64]>]>
- define MaxEffectiveLevelA <def[Attackroll].sub[<el@11.mul[<def[RangedBonus]>]>].sub[704].div[<def[RangedBonus].add[64]>]>
- define MaxEffectiveBonusA <def[Ranged].mul[-64].add[<def[Attackroll]>].sub[704].div[<def[Ranged].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
#██ 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]>