This commit is contained in:
louiscklaw
2025-01-31 19:51:47 +08:00
parent 118e4a5f39
commit 866bfd3b42
189 changed files with 43536 additions and 0 deletions

View File

View File

@@ -0,0 +1,8 @@
BattleDate,BattleNo,Attacker,Defender,Weapon,Result,Damage
15-May-23,5481,Calvin,SneakySue,Axe,Hit,87
15-May-23,5481,SneakySue,Calvin,Dagger,Miss,0
15-May-23,5481,Calvin,SneakySue,Axe,Hit,94
15-May-23,5481,SneakySue,Calvin,Dagger,Parry,0
15-May-23,5481,Calvin,SneakySue,Axe ,Hit,78
15-May-23,5481,SneakySue,Calvin,Dagger,Hit,14
15-May-23,5481,Calvin,SneakySue,Axe,Victory,112
1 BattleDate BattleNo Attacker Defender Weapon Result Damage
2 15-May-23 5481 Calvin SneakySue Axe Hit 87
3 15-May-23 5481 SneakySue Calvin Dagger Miss 0
4 15-May-23 5481 Calvin SneakySue Axe Hit 94
5 15-May-23 5481 SneakySue Calvin Dagger Parry 0
6 15-May-23 5481 Calvin SneakySue Axe Hit 78
7 15-May-23 5481 SneakySue Calvin Dagger Hit 14
8 15-May-23 5481 Calvin SneakySue Axe Victory 112

View File

@@ -0,0 +1,8 @@
Account_Number,Forename,surname,e-mail_Address,Character_CreationDate,Character_Expiry_Date,Character_Name,Character_Type,Level,ExperiencePoints,Max_Health,Health,AttackinScore,DefenceScore,StealthScore,ManaScore,Money_bank,Money_wallet
15468336,Jones,Susan,sj56@gmail.com,02-Jan-2022,,juju97,Warrior,12,12475,1000,996,85,23,17,,4273.95,351
15468336,Jones,Susan,sj56@gmail.com,15-Mar-2022,,SneakySue,Thief,7,7201,900,856,37,12,56,,11730.34,295
15468336,Jones,Susan,sj56@gmail.com,14-Jul-2022,19-Aug-2022,DarkMage,Mage,3,2012,250,250,12,17,9,21,0,0
35482956,Turker,Uraz,u.turker@lancaster.ac.uk,05-Mar-2022,,Uraz-The-Magnificent,Mage,34,34925,1200,1094,34,49,21,64,11397,700
54387937,Schmidt,Johan,jjs46@hotmail.com,08-Jan2023,,SpacemanSpiff,Mage,3,1085,250,227,9,19,8,31,548,102
64345236,Ricki,Boswell-Challand,r.boswell-challand@lancaster.ac.uk,24-Apr-2022,,Calvin,Merchant,18,21765,950,950,54,53,36,,34950,3705
64345236,Ricki,Boswell-Challand,r.boswell-challand@lancaster.ac.uk,13-May2022,,Hobbes,Warrior,95,95678,1500,1500,88,79,84,,0,0
1 Account_Number Forename surname e-mail_Address Character_CreationDate Character_Expiry_Date Character_Name Character_Type Level ExperiencePoints Max_Health Health AttackinScore DefenceScore StealthScore ManaScore Money_bank Money_wallet
2 15468336 Jones Susan sj56@gmail.com 02-Jan-2022 juju97 Warrior 12 12475 1000 996 85 23 17 4273.95 351
3 15468336 Jones Susan sj56@gmail.com 15-Mar-2022 SneakySue Thief 7 7201 900 856 37 12 56 11730.34 295
4 15468336 Jones Susan sj56@gmail.com 14-Jul-2022 19-Aug-2022 DarkMage Mage 3 2012 250 250 12 17 9 21 0 0
5 35482956 Turker Uraz u.turker@lancaster.ac.uk 05-Mar-2022 Uraz-The-Magnificent Mage 34 34925 1200 1094 34 49 21 64 11397 700
6 54387937 Schmidt Johan jjs46@hotmail.com 08-Jan2023 SpacemanSpiff Mage 3 1085 250 227 9 19 8 31 548 102
7 64345236 Ricki Boswell-Challand r.boswell-challand@lancaster.ac.uk 24-Apr-2022 Calvin Merchant 18 21765 950 950 54 53 36 34950 3705
8 64345236 Ricki Boswell-Challand r.boswell-challand@lancaster.ac.uk 13-May2022 Hobbes Warrior 95 95678 1500 1500 88 79 84 0 0

View File

@@ -0,0 +1,230 @@
<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
<script>
mermaid.initialize({
startOnLoad: true
});
</script>
</head>
<body>
<div class="mermaid">
---
title: Order example
---
erDiagram
CUSTOMER |o--o{ Warrior : Own
CUSTOMER |o--o{ Thief : Own
CUSTOMER |o--o{ Mage : Own
CUSTOMER |o--o{ Merchant : Own
ITEMS |o--o{ Warrior : Own
ITEMS |o--o{ Thief : Own
ITEMS |o--o{ Mage : Own
ITEMS |o--o{ Merchant : Own
Warrior }o--o{ COMBAT : Attack
Thief }o--o{ COMBAT : Attack
Mage }o--o{ COMBAT : Attack
Merchant }o--o{ COMBAT : Attack
Warrior }o--o{ COMBAT : Defense
Thief }o--o{ COMBAT : Defense
Mage }o--o{ COMBAT : Defense
Merchant }o--o{ COMBAT : Defense
COMBAT }o--o{ BATTLE : Own
CUSTOMER {
string AccountNumber PK
string e-mail_Address
string Forename
string surname
}
Merchant {
int AccountNumber FK
string CharacterCreationDate
string CharacterExpiryDate
string CharacterName
string CharacterType
string Level
string ExperiencePoints
string MaxHealth
string Health
string AttackinScore
string DefenceScore
string StealthScore
string ManaScore
string MoneyBank
string MoneyWallet
}
Mage {
int AccountNumber FK
string CharacterCreationDate
string CharacterExpiryDate
string CharacterName
string CharacterType
string Level
string ExperiencePoints
string MaxHealth
string Health
string AttackinScore
string DefenceScore
string StealthScore
string ManaScore
string MoneyBank
string MoneyWallet
}
Thief {
int AccountNumber FK
string CharacterCreationDate
string CharacterExpiryDate
string CharacterName
string CharacterType
string Level
string ExperiencePoints
string MaxHealth
string Health
string AttackinScore
string DefenceScore
string StealthScore
string ManaScore
string MoneyBank
string MoneyWallet
}
Warrior {
int AccountNumber FK
string CharacterCreationDate
string CharacterExpiryDate
string CharacterName
string CharacterType
string Level
string ExperiencePoints
string MaxHealth
string Health
string AttackinScore
string DefenceScore
string StealthScore
string ManaScore
string MoneyBank
string MoneyWallet
}
Score {
int characterKey FK
string ManaScore
string StealthScore
string DefenceScore
string AttackInScore
}
COMBAT {
int AccountNumber_CharacterName FK
string BattleDate
string BattleNo
string Attacker
string Defender
string Weapon
string Result
string Damage
}
ITEMS {
string Character
string Item
string Item_Type
string WeaponType
string Range
string Price
string Quantity
string DefendScore
string AttackScore
string HealingScore
string ManaScore
string SingleUse
string wearable
string worn
string BodyPart
string Equipped
}
ARMOUR {
string Price
string Quantity
string DefendScore
string SingleUse
string wearable
string worn
string BodyPart
string Equipped
}
ARTEFACT {
string Price
string Quantity
string DefendScore
string AttackScore
string ManaScore
string SingleUse
string wearable
string Equipped
}
CLOTHING {
string Price
string Quantity
string DefendScore
string ManaScore
string SingleUse
string wearable
string worn
string BodyPart
string Equipped
}
FOOD {
string Price
string Quantity
string HealingScore
string SingleUse
string wearable
string worn
string Equipped
}
WEAPON {
string WeaponType
string Range
string Price
string Quantity
string DefendScore
string AttackScore
string HealingScore
string SingleUse
string wearable
string Equipped
}
BATTLE {
string BattleDate
string BattleNo
}
COMBAT {
string Attacker FK
string Defender FK
string Weapon
string Result
string Damage
}
</div>
</body>
</html>

View File

@@ -0,0 +1,26 @@
@echo off
setlocal
if [%2] equ [] (
echo dot2 ext dotfile
exit /b
)
set extension=%1
set dotFile=%2
set dotFile_=%~n2%
if not exist %dotFile% (
echo %dotFile% does not exist
exit /b
)
dot -T%extension% -o%dotFile_%.%extension% %dotFile%
if %errorlevel% neq 0 (
echo ErrorLevel: %errorlevel%
exit /b
)
@REM start %dotFile_%.%extension%

View File

@@ -0,0 +1,63 @@
graph ER {
size="15,15"
fontname="Helvetica,Arial,sans-serif"
node [fontname="Helvetica,Arial,sans-serif", fontsize=10;]
edge [fontname="Helvetica,Arial,sans-serif"]
layout=neato
node [shape=triangle,color=red]; "ISA";
node [shape=box, color=black]; course; institute; student; Customers;
node [shape=box, color=black]; Customers;
node [shape=ellipse]; AccountNumber; EMailAddress; Name; Forename; Surname;
node [shape=ellipse]; {node [label="Name"] name0; name1; name2;}
Customers -- AccountNumber [len=2.0];
Customers -- EMailAddress [len=1.0];
Customers -- name0 [len=1.0];
Name -- Forename [len=1.5];
Name -- Surname [len=1.0];
node [shape=box,color=black, peripheries=2]; "Characters";
node [shape=ellipse, peripheries=1]; AccountNumber; Forename; surname; EMailAddress; CharacterCreationDate; CharacterExpiryDate; CharacterName; CharacterType; Level; ExperiencePoints; MaxHealth; Health; AttackinScore; DefenceScore; StealthScore; ManaScore; Moneybank; Moneywallet;
Characters -- Level [len=2.0];
Characters -- Type [len=2.0];
Characters -- Name [len=2.0];
Characters -- MaxHealth [len=2.0];
Characters -- StealthScore [len=2.0];
Characters -- ExperiencePoints [len=2.0];
Characters -- DefenceScore [len=2.0];
Characters -- MoneyBank [len=2.0];
Characters -- AttackInScore [len=2.0];
Characters -- MoneyWallet [len=2.0];
Characters -- Health [len=2.0];
Characters -- ManaScore [len=2.0];
Characters -- Date [len=2.0];
Date -- Creation [len=2.0];
Date -- Expiry [len=2.0];
Date -- BillDuration [len=2.0];
node [shape=ellipse]; {node [label="name"] name0; name1; name2;} code; grade; number;
node [shape=diamond,color=black, peripheries=2]; "C-I"; "S-C"; "S-I";
node [shape=box,color=black, peripheries=2]; "RECT2";
node [shape=ellipse,color=black, peripheries=2]; "ellipse2";
RECT2 -- ellipse2 [label="n",len=3.00, color="black:white:black"];
name0 -- course;
code -- course;
course -- "C-I" [label="n",len=1.00];
"C-I" -- institute [label="1",len=1.00];
institute -- name1;
institute -- "S-I" [label="1",len=1.00];
"S-I" -- student [label="n",len=1.00];
student -- grade;
student -- name2;
student -- number;
student -- "S-C" [label="m",len=1.00];
"S-C" -- course [label="n",len=1.00];
label = "\n\nEntity Relation Diagram\ndrawn by NEATO";
fontsize=10;
}

View File

@@ -0,0 +1,27 @@
graph ER {
fontname="Helvetica,Arial,sans-serif"
node [fontname="Helvetica,Arial,sans-serif", fontsize=10]
edge [fontname="Helvetica,Arial,sans-serif"]
layout=neato
node [shape=box]; course; institute; student;
node [shape=ellipse]; {node [label="name"] name0; name1; name2;}
code; grade; number;
node [shape=diamond,style=filled,color=lightgrey]; "C-I"; "S-C"; "S-I";
name0 -- course;
code -- course;
course -- "C-I" [label="n",len=1.00];
"C-I" -- institute [label="1",len=1.00];
institute -- name1;
institute -- "S-I" [label="1",len=1.00];
"S-I" -- student [label="n",len=1.00];
student -- grade;
student -- name2;
student -- number;
student -- "S-C" [label="m",len=1.00];
"S-C" -- course [label="n",len=1.00];
label = "\n\nEntity Relation Diagram\ndrawn by NEATO";
fontsize=20;
}

BIN
hk1234566/SQL/Assessment1/ER/helloworld.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<img src="helloworld.png" />
</body>
</html>

View File

@@ -0,0 +1,15 @@
Character,Item,Item_Type,WeaponType,Range,Price,Quantity,DefendScore,AttackScore,HealingScore,ManaScore,SingleUse,wearable,worn,BodyPart,Equipped
juju97,breastplate,Armour,,,290,1,18,,,,0,1,1,torso,0
Uraz-The-Magnificent,Wizard's Staff,Artefact,,,3500,1,0,0,,37,0,,,,1
SpacemanSpiff,Transmogrifier,Artefact,,,54000,1,,,,500,0,0,,,1
Uraz-The-Magnificent,Wizard's Robe,Clothing,,,2000,1,10,,,,,1,1,torso,0
juju97,Tunic,Clothing,,,5,1,1,0,,,0,1,1,torso,
juju97,Cloak of Invisibility,Clothing,,,4500,1,,,,75,,1,0,torso,
Uraz-The-Magnificent,Apple,Food,,,1,1,,,10,,1,,,,0
juju97,Bread,Food,,,0.75,3,,,8,,1,,,,0
SpacemanSpiff,Can of Tuna,Food,,,3,4,,,15,,1,0,,,1
Uraz-The-Magnificent,Cheese,Food,,,6,10,,,12,,1,0,0,,0
juju97,Broadsword,Weapon,Melee,,175,1,,24,,,0,0,,,1
juju97,slingshot,Weapon,Projectile,30,50,1,,13,,,0,0,,,0
SneakySue,Dagger,Weapon,Melee,,12,1,1,10,0,,0,0,,,1
Calvin,Axe,Weapon,Melee,,80,1,,,,,,,,,1
1 Character Item Item_Type WeaponType Range Price Quantity DefendScore AttackScore HealingScore ManaScore SingleUse wearable worn BodyPart Equipped
2 juju97 breastplate Armour 290 1 18 0 1 1 torso 0
3 Uraz-The-Magnificent Wizard's Staff Artefact 3500 1 0 0 37 0 1
4 SpacemanSpiff Transmogrifier Artefact 54000 1 500 0 0 1
5 Uraz-The-Magnificent Wizard's Robe Clothing 2000 1 10 1 1 torso 0
6 juju97 Tunic Clothing 5 1 1 0 0 1 1 torso
7 juju97 Cloak of Invisibility Clothing 4500 1 75 1 0 torso
8 Uraz-The-Magnificent Apple Food 1 1 10 1 0
9 juju97 Bread Food 0.75 3 8 1 0
10 SpacemanSpiff Can of Tuna Food 3 4 15 1 0 1
11 Uraz-The-Magnificent Cheese Food 6 10 12 1 0 0 0
12 juju97 Broadsword Weapon Melee 175 1 24 0 0 1
13 juju97 slingshot Weapon Projectile 30 50 1 13 0 0 0
14 SneakySue Dagger Weapon Melee 12 1 1 10 0 0 0 1
15 Calvin Axe Weapon Melee 80 1 1

Binary file not shown.

File diff suppressed because one or more lines are too long

BIN
hk1234566/SQL/Assessment1/docs/ER_for_characters.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
hk1234566/SQL/Assessment1/docs/ER_for_combat.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
hk1234566/SQL/Assessment1/docs/ER_for_customers.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
hk1234566/SQL/Assessment1/docs/ER_for_items.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
hk1234566/SQL/Assessment1/docs/ER_overview.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,92 @@
# ER and attributes for combat
![](./ER_for_combat.png)
### Entity
A Battle has a Battle Number (the primary key) and Date(BattleDate) attribute.
A Combat has a Damage, Weapon and a Result attribute.
### Relationship: Involved (battle)
A combat must have battle involved.
A battle will contain at least on combat.
### Relationship: Involved (Attacker / Defender)
A combat must have at least 1 characters involved.
A Characters may contain empty combat history
# ER and attributes for characters
![](./ER_for_characters.png)
### Entity
A Characters has a Name(key), Type, Level, ExperiencePoints, MaxHealth, Health, AttackInScore, DefenceScore, StealthScore, ManaScore, MoneyBank MoneyWallet attribute.
### Relationship: OwnedBy
A character must owned by one player
A player may have many characters
### Relationship: OwnItems
An Items must owned by one character
A character may have many Items
If a character is deleted from the game server, the items will be deleted
### Relationship: Involved
A Combat (either attacker/defender) must owned by one character
A character may involved in many combats
If a character is deleted from the game server, the combat will be deleted
# ER and attributes for customers/players
![](./ER_for_customers.png)
## Entity set
A customers has a AccountNumber(key), Name and EMailAddress attribute.
Name is a Multi-valued attribute containing Forename and Surname.
## Relationship Owned By
A Characters must owned by one character
A customers/player may have many character
If a customer/player is deleted from the game server, the characters will be deleted
# ER and attributes for items/inventory
![](./ER_for_items.png)
## Entity set
A Items has a ItemName, ItemType, WeaponType, Quantity, Range, SingleUse, Price, Equipped, BodyPart, Wearable, Worn attribute
A Score is a Multi-valued attribute containing ManaScore, DefendScore and AttackScore.
A ItemKey is an key to indicate the specific item
## Relationship OwnedItems
A Items must owned by one character
A character may have many items
If a character is deleted from the game server, the Items will be deleted
# Overview of ERs
![](./ER_overview.png)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,85 @@
Players(customers)
- requirements:
- A player must have at least one character (Characters_owned)
- can create a new character or
- deactivate one they no longer wish to play
- Once a player unsubscribed from the game, the character is also removed from the system.
- A player will be billed at the end of a calendar month
- for all active characters for any part of that month.
- fields:
- Account_Number(pk)
- Forename
- surname
- e-mail_Address
- Characters_owned(1 to many to characters)
Characters
- requirements:
- Characters have combat info (see Combat.csv)
- fields:
- Name(Character_Name)
- Type(Character_Type)
- Level
- ExperiencePoints
- Max_Health
- Health
- AttackInScore
- DefenceScore
- StealthScore
- ManaScore
- MoneyBank
- MoneyWallet
- OwnedBy (many to 1 to players)
- Items (1 to Many to items table)
- CombatInvolved (1 to many to Combat table / Battle)
- CreationDate(Character_CreationDate)
- ExpiryDate(Character_Expiry_Date)
Inventory(Items)
- for the various weapons and armour a character may possess
- Weapons:
- range
- damage points.
- Armours:
- defence score
- worn on a speciÞc body part.
- Supplies:
- healing score,
- mana score
- if consumed increase the characters life score by that amount (after which time the character will possess one fewer of that type of item)
- fields:
- ItemsKey(pk)
- Item_Name(Item)
- Item_Type
- WeaponType
- Range
- Price
- Quantity
- DefendScore
- AttackScore
- HealingScore
- ManaScore
- SingleUse
- wearable
- worn
- BodyPart
- Equipped
- Character (many to 1 to character / Items)
Combat:
- requirements:
- \# of kills
- KIAs(Killed in action)
- victories
- fields:
- BattleNo(pk)
- BattleDate
- Attacker(many to 1 -> characters)
- Defender(many to 1 -> characters)
- Weapon
- Result
- Damage

View File

@@ -0,0 +1,29 @@
# notes.md
![](./combat.png)
Your ERD should handle the following rules as a minimum but please use your
imagination to provide further rules:
a) A player must have at least one character and can create a new character or
deactivate one they no longer wish to play at any time. Once a player
unsubscribed from the game, the character is also removed from the system.
b) A player will be billed at the end of a calendar month for all active characters
for any part of that month.
c) A character can possess any number of inventory items (see Inventories.csv):
a. Weapons: have a range, damage points.
b. Armours: has a defence score and is worn on a speci c body part.
c. Supplies: have a healing score, mana score and if consumed increase the characters life score by that amount (after which time the character will possess one fewer of that type of item)
d) Characters have combat info (see Combat.csv)
1. Your initial E-R diagram (WEEK 8 30%)
You will provide two outputs:
1) An English paragraph given in a PDF Þle that describes your personal ERD and
2) your ERD (embedded in the PDF Þle). We will assess your ERD by reading your paragraph.
You will receive full mark if your paragraph matches to your ERD.
Otherwise we will reduce your marks based on the following rules:
a) For each participation constraint fault (-1.5%).
b) For each multiplicity fault (-1.5%).
c) For each notation/Symbol fault (-1.5%).

View File

@@ -0,0 +1,19 @@
In the followings we will provide you some requirements,
however we will expect you to exceed these expectations. You will need to demonstrate these in three milestones:
MILESTONES
1) Design and develop an Entity-Relationship Diagram (ERD) that models the following
key entities:
a) Customers/Players.
b) Characters.
c) Inventory for the various weapons and armour a character may possess.
d) Combat activities (#of kills, KIAs, victories, etc.).
Your ERD should handle the following rules as a minimum but please use your imagination to provide further rules:
a) A player must have at least one character and can create a new character or deactivate one they no longer wish to play at any time. Once a player unsubscribed from the game, the character is also removed from the system.
b) A player will be billed at the end of a calendar month for all active characters for any part of that month.
c) A character can possess any number of inventory items (see Inventories.csv):
a. Weapons: have a range, damage points.
b. Armours: has a defence score and is worn on a speciÞc body part.
c. Supplies: have a healing score, mana score and if consumed increase the characters life score by that amount (after which time the character will possess one fewer of that type of item)
d) Characters have combat info (see Combat.csv)

View File

@@ -0,0 +1 @@
digraph G {Hello->World}

View File

@@ -0,0 +1,105 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<script charset="utf-8" type="text/javascript" src="live.bc.js" ></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.4.1/semantic.min.css" integrity="sha256-9mbkOfVho3ZPXfM7W8sV2SndrGDuh7wuyLjtsWeTI1Q=" crossorigin="anonymous" />
<script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.4.1/semantic.js" integrity="sha256-qs5p0BFSqSvrstBxPvex+zdyrzcyGdHNeNmAirO2zc0=" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/tonsky/FiraCode@1.207/distr/fira_code.css">
<link rel="stylesheet" href="style.css" />
<title>ovenMPST IDE</title>
<script src="https://cdn.jsdelivr.net/npm/iblize/dist/iblize.min.js"></script>
</head>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/viz.js/2.1.2/viz.js" integrity="sha256-8RHyK+AFzq9iXwbFo2unqidwPbwHU5FFWe3RwkcVtuU=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/viz.js/2.1.2/full.render.js" integrity="sha256-Ogqs510LFnekr9o7OLdpelaaAmNss9egQRTyzCqV2NQ=" crossorigin="anonymous"></script>
<script>
function getProtocolName() {
var ele = document.getElementsByName('protocol_choice');
for(i = 0; i < ele.length; i++) {
if(ele[i].checked) return ele[i].value.trim();
}
return "";
}
function getOutputFormat() {
var ele = document.getElementById('output_format');
var ret = ele.value;
return ret;
}
</script>
<div class="ui fixed menu">
<div class="ui container">
<a href="https://nuscr.dev/oven/" class="header item">
<img class="logo" src="ovenMPST.png">
OvenMPST
</a>
<!-- <a href="docs" class="item">Documentation</a> -->
<a href="https://github.com/nuscr/oven" target="_blank" rel="noopener noreferrer" class="item">GitHub</a>
</div>
</div>
<div class="ui main container">
<h1 class="ui header">
<img src="ovenMPST.png" alt="Logo" />
OvenMPST IDE
</h1>
<div class="ui grid">
<div class="eight wide column">
<h2>Global protocol</h2>
<div rows="30" id="protocol-textarea" default="Enter text..."></div>
<script>
// use selector
const iblize = new Iblize("#protocol-textarea", {
language: "html",
lineNumber: true,
theme: "iblize-light",
// etc
});
to1 = window.setTimeout(() => console.log("empty timer."), 1);
to2 = window.setTimeout(() => console.log("empty timer."), 1);
function clear_and_parse () {
ovenInterface.clear(1); ovenInterface.parse(1);
}
iblize.onUpdate((value) => {
window.clearTimeout(to1);
to1 = window.setTimeout(clear_and_parse, 100);
window.clearTimeout(to2);
to2 = window.setTimeout(()=> ovenInterface.render(1), 1000);
});
</script>
<br />
<select required class="ui dropdown" id="examples">
<option value="" disabled selected hidden>Load an example</option>
</select>
<select required class="ui dropdown" id="output_format">
<option value="graph" selected>Show graph</option>
<option value="dot">Show graphviz dot file</option>
</select>
<button class="ui button" id="button">Analyse</button>
</div>
<div class="eight wide column" id="output">
</div>
<div class="ui negative message" id="errorbox" hidden></div>
<div class="sixteen wide column">
<h2> Global Machine </h2>
<!-- remove the unused ones -->
<div id="result"></div>
<pre id="projected"/></pre>
<div id="efsm" style="overflow: scroll;"></div>
</div>
<div class = "sixteen wide column">
<h2>Local Projections </h2>
<div id="local">
</div>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,519 @@
<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="app.diagrams.net" modified="2023-03-09T04:41:02.806Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36" etag="qIToQRhJueHNQSkVaT_3" version="20.8.5" type="device">
<diagram id="gbh2_RjxMlchc6C8Ck6F" name="Page-2">
<mxGraphModel dx="1052" dy="1885" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1654" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="W42QqZGia2SB_BN2uIFJ-129" value="N" style="endArrow=none;html=1;rounded=0;strokeWidth=2;fontSize=14;entryX=0.025;entryY=0.499;entryDx=0;entryDy=0;shape=link;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryPerimeter=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-19" target="W42QqZGia2SB_BN2uIFJ-8" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="584" y="-546.75" as="sourcePoint" />
<mxPoint x="639" y="-546.75" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-1" value="Customers" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=2;fontSize=14;direction=west;" parent="1" vertex="1">
<mxGeometry x="746.5" y="-937" width="135" height="120" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-2" value="" style="group" parent="1" vertex="1" connectable="0">
<mxGeometry x="774" y="-722" width="80" height="80" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-3" value="" style="rhombus;whiteSpace=wrap;html=1;" parent="W42QqZGia2SB_BN2uIFJ-2" vertex="1">
<mxGeometry width="80" height="80" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-4" value="Owned&lt;br style=&quot;border-color: var(--border-color); padding: 0px; margin: 0px;&quot;&gt;&lt;span style=&quot;&quot;&gt;By&lt;/span&gt;" style="rhombus;whiteSpace=wrap;html=1;" parent="W42QqZGia2SB_BN2uIFJ-2" vertex="1">
<mxGeometry x="10" y="10" width="60" height="60" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-5" value="N" style="endArrow=none;html=1;rounded=0;exitX=0.505;exitY=1.027;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;shape=link;fontSize=14;exitPerimeter=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-3" target="W42QqZGia2SB_BN2uIFJ-15" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1049" y="-596.25" as="sourcePoint" />
<mxPoint x="1099" y="-646.25" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-7" value="" style="group" parent="1" vertex="1" connectable="0">
<mxGeometry x="594" y="-590" width="115" height="83.75" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-8" value="" style="rhombus;whiteSpace=wrap;html=1;" parent="W42QqZGia2SB_BN2uIFJ-7" vertex="1">
<mxGeometry width="115" height="83.75" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-9" value="Own&lt;br&gt;Items" style="rhombus;whiteSpace=wrap;html=1;" parent="W42QqZGia2SB_BN2uIFJ-7" vertex="1">
<mxGeometry x="14.375" y="10.46875" width="86.25" height="62.8125" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-11" value="Involved&lt;br&gt;(battle)" style="rhombus;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="989" y="-346.25" width="80" height="80" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-12" value="M" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;strokeWidth=2;fontSize=14;shape=link;" parent="1" source="W42QqZGia2SB_BN2uIFJ-11" target="W42QqZGia2SB_BN2uIFJ-22" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="899" y="-58.379999999999995" as="sourcePoint" />
<mxPoint x="867.5" y="-30.129999999999995" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-13" value="N" style="endArrow=none;html=1;rounded=0;strokeWidth=2;fontSize=14;entryX=0;entryY=0.5;entryDx=0;entryDy=0;shape=link;" parent="1" target="W42QqZGia2SB_BN2uIFJ-11" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="934" y="-306.25" as="sourcePoint" />
<mxPoint x="897.5" y="-94.13" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-14" value="" style="group" parent="1" vertex="1" connectable="0">
<mxGeometry x="764" y="-581.25" width="100" height="70" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-15" value="Characters" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=2;fontSize=14;" parent="W42QqZGia2SB_BN2uIFJ-14" vertex="1">
<mxGeometry width="100" height="70" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-16" value="Characters" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=2;fontSize=14;" parent="W42QqZGia2SB_BN2uIFJ-14" vertex="1">
<mxGeometry x="10" y="10" width="80" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-17" value="" style="group" parent="1" vertex="1" connectable="0">
<mxGeometry x="414" y="-572.65" width="88.72" height="52.8" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-18" value="Items" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=2;fontSize=14;" parent="W42QqZGia2SB_BN2uIFJ-17" vertex="1">
<mxGeometry width="88.72" height="52.79999999999999" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-19" value="Items" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=2;fontSize=14;" parent="W42QqZGia2SB_BN2uIFJ-17" vertex="1">
<mxGeometry x="6.571851851851852" y="6.700507614213197" width="76.41749333333334" height="39.398984771573595" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-20" value="1" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.471;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;strokeWidth=2;fontSize=14;entryPerimeter=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-8" target="W42QqZGia2SB_BN2uIFJ-15" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="624" y="-456.25" as="sourcePoint" />
<mxPoint x="674" y="-506.25" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-21" value="" style="group" parent="1" vertex="1" connectable="0">
<mxGeometry x="1124" y="-329.43999999999994" width="92.5" height="47.129999999999995" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-22" value="Battle" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=2;fontSize=14;" parent="W42QqZGia2SB_BN2uIFJ-21" vertex="1">
<mxGeometry width="92.5" height="47.13" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-23" value="Battle" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=2;fontSize=14;" parent="W42QqZGia2SB_BN2uIFJ-21" vertex="1">
<mxGeometry x="8.75" y="6.059999999999945" width="75" height="35.75" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-24" value="" style="group" parent="1" vertex="1" connectable="0">
<mxGeometry x="844" y="-336.25" width="90" height="60" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-25" value="Combat" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=2;fontSize=14;" parent="W42QqZGia2SB_BN2uIFJ-24" vertex="1">
<mxGeometry width="90" height="60" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-26" value="Combat" style="rounded=0;whiteSpace=wrap;html=1;strokeWidth=2;fontSize=14;" parent="W42QqZGia2SB_BN2uIFJ-24" vertex="1">
<mxGeometry x="7.5" y="12.120000000000005" width="75" height="36.5" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-27" value="Involved&lt;br&gt;(battle)" style="rhombus;whiteSpace=wrap;html=1;" parent="1" vertex="1">
<mxGeometry x="994" y="-341.25" width="70" height="70" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-28" value="BattleDate" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="1261.5" y="-298.37" width="78.75" height="60" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-29" value="" style="endArrow=none;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;strokeWidth=2;fontSize=14;entryX=0.017;entryY=0.591;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="W42QqZGia2SB_BN2uIFJ-28" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1216.5" y="-300.3699999999999" as="sourcePoint" />
<mxPoint x="1311.505" y="-304.22575000000006" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-30" value="" style="endArrow=none;html=1;rounded=0;strokeWidth=2;fontSize=14;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1.004;exitY=0.394;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" target="W42QqZGia2SB_BN2uIFJ-113" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1216.5" y="-304.3699999999999" as="sourcePoint" />
<mxPoint x="1278.7800000000002" y="-309.4399999999998" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-31" value="Weapon" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="894" y="-207" width="75" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-32" value="" style="endArrow=none;html=1;rounded=0;strokeWidth=3;entryX=0.395;entryY=1.023;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-31" target="W42QqZGia2SB_BN2uIFJ-25" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="437" y="-53" as="sourcePoint" />
<mxPoint x="623" y="-262" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-33" value="Result" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="799" y="-207" width="75" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-34" value="" style="endArrow=none;html=1;rounded=0;exitX=0.63;exitY=0.051;exitDx=0;exitDy=0;strokeWidth=3;exitPerimeter=0;entryX=0.13;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-33" target="W42QqZGia2SB_BN2uIFJ-25" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="757" y="-271.25" as="sourcePoint" />
<mxPoint x="854" y="-278" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-35" value="Damage" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="989" y="-207" width="75" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-36" value="" style="endArrow=none;html=1;rounded=0;exitX=0.431;exitY=0.014;exitDx=0;exitDy=0;strokeWidth=3;exitPerimeter=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-35" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="937" y="-291.25" as="sourcePoint" />
<mxPoint x="914" y="-277" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-38" value="SingleUse" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="329" y="-700.0000000000001" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-169" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=1;entryDx=0;entryDy=0;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-39" target="W42QqZGia2SB_BN2uIFJ-141" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-39" value="ManaScore" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="509" y="-230" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-159" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-41" target="W42QqZGia2SB_BN2uIFJ-38" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="414" y="-676" as="targetPoint" />
<Array as="points">
<mxPoint x="419" y="-676" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-41" value="Quantity" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="494" y="-700" width="95" height="48" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-153" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-43" target="W42QqZGia2SB_BN2uIFJ-130" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="464" y="-612" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-43" value="Price" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="329" y="-637.0000000000001" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-170" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-45" target="W42QqZGia2SB_BN2uIFJ-142" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-45" value="Range" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="44" y="-437" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-163" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=1;entryDx=0;entryDy=0;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-47" target="W42QqZGia2SB_BN2uIFJ-142" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-47" value="WeaponType" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="104" y="-369.12" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-161" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=1;entryDx=0;entryDy=0;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-49" target="W42QqZGia2SB_BN2uIFJ-141" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-49" value="ItemType" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="329" y="-240.32" width="90" height="48" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-165" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-53" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="414" y="-740" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-53" value="Equipped" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="494" y="-765" width="92.5" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-164" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-55" target="W42QqZGia2SB_BN2uIFJ-141" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-55" value="BodyPart" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="414" y="-207" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-57" value="Worn" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="409" y="-830" width="100" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-59" value="Wearable" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="329" y="-764" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-171" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-62" target="W42QqZGia2SB_BN2uIFJ-143" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-62" value="HealingScore" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="584" y="-333.55999999999995" width="100" height="51.25" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-168" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=1;entryDx=0;entryDy=0;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-63" target="W42QqZGia2SB_BN2uIFJ-142" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-63" value="AttackScore" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="314" y="-370" width="90" height="50.88" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-167" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-66" target="W42QqZGia2SB_BN2uIFJ-142" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-66" value="DefendScore" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="214" y="-336.25" width="90" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-68" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-69" target="W42QqZGia2SB_BN2uIFJ-1" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="994" y="-877" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-69" value="Account_Number" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;fontStyle=4" parent="1" vertex="1">
<mxGeometry x="914" y="-967" width="160" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-70" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-71" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="994" y="-877" as="targetPoint" />
<Array as="points">
<mxPoint x="1124" y="-877" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-71" value="Name" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="1089" y="-957" width="100" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-72" value="Forename" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="1116.5" y="-1030" width="100" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-73" value="Surname" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="1195" y="-980" width="100" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-74" value="" style="endArrow=none;html=1;rounded=0;strokeWidth=3;" parent="1" source="W42QqZGia2SB_BN2uIFJ-72" target="W42QqZGia2SB_BN2uIFJ-71" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1392" y="-897" as="sourcePoint" />
<mxPoint x="1420" y="-827" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-75" value="" style="endArrow=none;html=1;rounded=0;strokeWidth=3;entryX=0.013;entryY=0.532;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-73" target="W42QqZGia2SB_BN2uIFJ-71" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="1208" y="-864" as="sourcePoint" />
<mxPoint x="1243" y="-845" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-76" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-77" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="884" y="-877" as="targetPoint" />
<Array as="points">
<mxPoint x="895" y="-1007" />
<mxPoint x="895" y="-877" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-77" value="EMailAddress" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="944" y="-1040" width="130" height="60" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-78" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-79" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="914" y="-534" as="targetPoint" />
<Array as="points">
<mxPoint x="994" y="-534" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-79" value="Type" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="959" y="-484" width="70" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-80" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.632;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-81" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="914" y="-534" />
</Array>
<mxPoint x="864.0000000000005" y="-534.0100000000002" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-81" value="Level" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="879" y="-484" width="70" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-82" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-83" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="864.0000000000005" y="-534" as="targetPoint" />
<Array as="points">
<mxPoint x="1182" y="-534" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-83" value="ExperiencePoints" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="1101.5" y="-619.65" width="160" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-84" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-85" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="865" y="-534" as="targetPoint" />
<Array as="points">
<mxPoint x="1084" y="-534" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-85" value="MaxHealth" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="1015" y="-674" width="160" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-86" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-87" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1364" y="-534" as="targetPoint" />
<Array as="points">
<mxPoint x="1409" y="-534" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-87" value="Health" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="1359" y="-434" width="100" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-88" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-89" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1154" y="-534" as="targetPoint" />
<Array as="points">
<mxPoint x="1335" y="-534" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-89" value="AttackInScore" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="1275" y="-479" width="100" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-90" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-91" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1039" y="-534" as="targetPoint" />
<Array as="points">
<mxPoint x="1205" y="-534" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-91" value="DefenceScore" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="1161.5" y="-484" width="100" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-92" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-93" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="864" y="-534" as="targetPoint" />
<Array as="points">
<mxPoint x="1095" y="-534" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-93" value="StealthScore" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="1045" y="-484" width="100" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-95" value="ManaScore" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="1424" y="-484" width="100" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-96" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-97" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1194" y="-534" as="targetPoint" />
<Array as="points">
<mxPoint x="1290" y="-534" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-97" value="MoneyBank" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="1234" y="-689" width="100" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-98" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-99" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1284" y="-534" as="targetPoint" />
<Array as="points">
<mxPoint x="1364" y="-534" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-99" value="MoneyWallet" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="1314" y="-639" width="100" height="50" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-178" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.605;entryY=-0.016;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-100" target="W42QqZGia2SB_BN2uIFJ-119" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-100" value="Creation" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="1469" y="-703.5" width="70" height="42" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-179" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0;exitDx=0;exitDy=0;entryX=1;entryY=0;entryDx=0;entryDy=0;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-101" target="W42QqZGia2SB_BN2uIFJ-119" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-101" value="Expiry" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;" parent="1" vertex="1">
<mxGeometry x="1543.5" y="-695.5" width="66.5" height="37" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-122" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.302;entryY=0.053;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-102" target="W42QqZGia2SB_BN2uIFJ-119" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1456" y="-677.5" />
<mxPoint x="1456" y="-650.5" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-102" value="BillDuration" style="ellipse;whiteSpace=wrap;html=1;fontSize=14;strokeWidth=3;direction=west;dashed=1;dashPattern=1 1;" parent="1" vertex="1">
<mxGeometry x="1414" y="-751.5" width="85" height="40" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-106" value="" style="group" parent="1" vertex="1" connectable="0">
<mxGeometry x="762.72" y="-463.25" width="76" height="75" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-107" value="" style="rhombus;whiteSpace=wrap;html=1;" parent="W42QqZGia2SB_BN2uIFJ-106" vertex="1">
<mxGeometry width="76" height="75" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-108" value="Attacker/ Defender" style="rhombus;whiteSpace=wrap;html=1;" parent="W42QqZGia2SB_BN2uIFJ-106" vertex="1">
<mxGeometry x="2.111111111111111" y="3.2522727272727145" width="71.77777777777777" height="68.50227272727273" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-109" value="M" style="endArrow=none;html=1;rounded=0;strokeWidth=2;edgeStyle=orthogonalEdgeStyle;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.369;entryY=0.993;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-107" target="W42QqZGia2SB_BN2uIFJ-15" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="855" y="-447" as="sourcePoint" />
<mxPoint x="934" y="-497" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-110" value="N" style="endArrow=none;html=1;rounded=0;strokeWidth=2;shape=link;edgeStyle=orthogonalEdgeStyle;exitX=-0.011;exitY=0.349;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-25" target="W42QqZGia2SB_BN2uIFJ-107" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="854" y="-382" as="sourcePoint" />
<mxPoint x="904" y="-432" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-111" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-112" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="973.5" y="-534" as="targetPoint" />
<Array as="points">
<mxPoint x="994" y="-534" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-112" value="&lt;span style=&quot;border-bottom: 1px dotted&quot;&gt;Name&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;align=center;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="944" y="-597" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-113" value="&lt;span style=&quot;border-bottom: 1px dotted&quot;&gt;BattleNo&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;align=center;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="1275" y="-359.12" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-190" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=1;exitDx=0;exitDy=0;endArrow=none;endFill=0;jumpStyle=none;jumpSize=6;" parent="1" source="W42QqZGia2SB_BN2uIFJ-119" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1404" y="-530" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-119" value="Date" style="ellipse;whiteSpace=wrap;html=1;align=center;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="1424" y="-621.65" width="100" height="59.65" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-140" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-128" target="W42QqZGia2SB_BN2uIFJ-141" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="459" y="-394.75" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-128" value="ISA" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.acute_triangle;dx=0.5;strokeWidth=3;labelPosition=center;align=center;" parent="1" vertex="1">
<mxGeometry x="414" y="-470" width="90" height="60" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-130" value="&lt;span style=&quot;border-bottom: 1px dotted&quot;&gt;ItemName&lt;/span&gt;" style="ellipse;whiteSpace=wrap;html=1;align=center;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="494" y="-632" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-141" value="Wear" style="shape=ext;margin=3;double=1;whiteSpace=wrap;html=1;align=center;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="409" y="-310" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-145" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-142" target="W42QqZGia2SB_BN2uIFJ-128" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-142" value="Weapon" style="shape=ext;margin=3;double=1;whiteSpace=wrap;html=1;align=center;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="214" y="-428.25" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-144" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-143" target="W42QqZGia2SB_BN2uIFJ-128" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-143" value="Food" style="shape=ext;margin=3;double=1;whiteSpace=wrap;html=1;align=center;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="584" y="-428.25" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-146" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=45;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-18" target="W42QqZGia2SB_BN2uIFJ-128" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-160" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-18" target="W42QqZGia2SB_BN2uIFJ-57" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="458" y="-790" as="targetPoint" />
<mxPoint x="459" y="-580" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-173" value="1" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;strokeWidth=2;fontSize=14;" parent="1" source="W42QqZGia2SB_BN2uIFJ-1" edge="1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="691.5000000000005" y="-763.845" as="sourcePoint" />
<mxPoint x="814" y="-720" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-187" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0;exitDx=45;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-174" target="W42QqZGia2SB_BN2uIFJ-184" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-174" value="ISA" style="verticalLabelPosition=middle;verticalAlign=middle;html=1;shape=mxgraph.basic.acute_triangle;dx=0.5;strokeWidth=3;labelPosition=center;align=center;" parent="1" vertex="1">
<mxGeometry x="873" y="-679" width="90" height="60" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-180" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-15" target="W42QqZGia2SB_BN2uIFJ-174" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-189" style="edgeStyle=none;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endArrow=none;endFill=0;" parent="1" source="W42QqZGia2SB_BN2uIFJ-184" target="W42QqZGia2SB_BN2uIFJ-188" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-184" value="Mage" style="shape=ext;margin=3;double=1;whiteSpace=wrap;html=1;align=center;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="919" y="-751.5" width="100" height="41.5" as="geometry" />
</mxCell>
<mxCell id="W42QqZGia2SB_BN2uIFJ-188" value="ManaScore" style="ellipse;whiteSpace=wrap;html=1;align=center;strokeWidth=3;" parent="1" vertex="1">
<mxGeometry x="1054" y="-799" width="100" height="40" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

File diff suppressed because one or more lines are too long

BIN
hk1234566/SQL/Assessment1/update3/ERD-Page-2.drawio.png (Stored with Git LFS) Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

BIN
hk1234566/SQL/Assessment1/update3/ERD-characters.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
hk1234566/SQL/Assessment1/update3/ERD-combat.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
hk1234566/SQL/Assessment1/update3/ERD-items-1.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
hk1234566/SQL/Assessment1/update3/ERD-items-2.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
hk1234566/SQL/Assessment1/update3/ERD-items.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
hk1234566/SQL/Assessment1/update3/ERD-overview.png (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
hk1234566/SQL/Assessment2/1NF-example.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
hk1234566/SQL/Assessment2/2NF-example.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
hk1234566/SQL/Assessment2/3NF-example.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
hk1234566/SQL/Assessment2/4NF-example.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
hk1234566/SQL/Assessment2/5NF-example.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
hk1234566/SQL/Assessment2/first-normal-form.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,30 @@
2) Write relational schema and integrity constraints for your relations. Provide the relevant SQL DDL statements to implement your ERD.
a) Pay careful attention to your choice of datatypes and consistency.
b) Consider referential integrity and nullable/not nullable attributes.
c) Make comment on the Normalisation level of your schemas.
d) Providing relational algebra statements is a bonus.
Assessment:
2. SQL DDL (30%)
You will provide a PDF Þle that contains your
Relational Schemas (RS),
Integrity Constraints (IC),
i.e.:
```
Mec_Repair(MID:integer, Name:string, Brand:string),
ICs: MID (Primary key), Brand (Foreign key referencing Car)
Normalisation reports: i.e. 3NF
DDL statements:
Car(Brand:string, weight:integer),
ICs: Brand (Primary key)
Normalisation reports: i.e. 3NF
DDL statements:
```
Normalisation reports for each RSs and
the DDL statements written in SQL.
You will receive full mark if your RS and ICs matches with your ERD. Otherwise, you we will reduce your mark based on the followings:
a) Typo for SQL code -2pts.
b) Reporting wrong Normalisation level -5pts.
c) IC mismatch from ERD to ICs or from ICs to DDL -10 pts.
d) Providing Relational Algebra statements (Bonus 10 pts)

BIN
hk1234566/SQL/Assessment2/second-nromal-form.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -0,0 +1,7 @@
3. Java Library and SQL queries (40%)
You will provide a java library that reads CSV Þle and builds required tables and answers the queries given above. You will receive full mark if your library successfully accomplishes these tasks. Otherwise we will reduce your mark according to the following rules:
a) Not compiles -100pts.
b) Compiles but cannot populate tables -50pts.
c) Cannot read CSV Þles but reads from other Þle format and populates tables - 0pts.
d) SQL Integrity Constraint warning, error while populating -10pts.
e) Failed to retrieve the answer for a query -10pts.

8
hk1234566/SQL/Combat.csv Normal file
View File

@@ -0,0 +1,8 @@
BattleDate,BattleNo,Attacker,Defender,Weapon,Result,Damage
15-May-23,5481,Calvin,SneakySue,Axe,Hit,87
15-May-23,5481,SneakySue,Calvin,Dagger,Miss,0
15-May-23,5481,Calvin,SneakySue,Axe,Hit,94
15-May-23,5481,SneakySue,Calvin,Dagger,Parry,0
15-May-23,5481,Calvin,SneakySue,Axe ,Hit,78
15-May-23,5481,SneakySue,Calvin,Dagger,Hit,14
15-May-23,5481,Calvin,SneakySue,Axe,Victory,112
1 BattleDate BattleNo Attacker Defender Weapon Result Damage
2 15-May-23 5481 Calvin SneakySue Axe Hit 87
3 15-May-23 5481 SneakySue Calvin Dagger Miss 0
4 15-May-23 5481 Calvin SneakySue Axe Hit 94
5 15-May-23 5481 SneakySue Calvin Dagger Parry 0
6 15-May-23 5481 Calvin SneakySue Axe Hit 78
7 15-May-23 5481 SneakySue Calvin Dagger Hit 14
8 15-May-23 5481 Calvin SneakySue Axe Victory 112

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,8 @@
Account_Number,Forename,surname,e-mail_Address,Character_CreationDate,Character_Expiry_Date,Character_Name,Character_Type,Level,ExperiencePoints,Max_Health,Health,AttackinScore,DefenceScore,StealthScore,ManaScore,Money_bank,Money_wallet
15468336,Jones,Susan,sj56@gmail.com,02-Jan-2022,,juju97,Warrior,12,12475,1000,996,85,23,17,,4273.95,351.00
35482956,Turker,Uraz,u.turker@lancaster.ac.uk,05-Mar-2022,,Uraz-The-Magnificent,Mage,34,34925,1200,1094,34,49,21,64,11397.00,700.00
64345236,Ricki,Boswell-Challand,r.boswell-challand@lancaster.ac.uk,24-Apr-2022,,Calvin,Merchant,18,21765,950,950,54,53,36,,34950.00,3705.00
64345236,Ricki,Boswell-Challand,r.boswell-challand@lancaster.ac.uk,13-May2022,,Hobbes,Warrior,95,95678,1500,1500,88,79,84,,0,0
15468336,Jones,Susan,sj56@gmail.com,15-Mar-2022,,SneakySue,Thief,7,7201,900,856,37,12,56,,11730.34,295.00
54387937,Schmidt,Johan,jjs46@hotmail.com,08-Jan2023,,SpacemanSpiff,Mage,3,1085,250,227,09,19,8,31,548.00,102.00
15468336,Jones,Susan,sj56@gmail.com,14-Jul-2022,19-Aug-2022,DarkMage,Mage,3,2012,250,250,12,17,9,21,0.00,0.00
1 Account_Number Forename surname e-mail_Address Character_CreationDate Character_Expiry_Date Character_Name Character_Type Level ExperiencePoints Max_Health Health AttackinScore DefenceScore StealthScore ManaScore Money_bank Money_wallet
2 15468336 Jones Susan sj56@gmail.com 02-Jan-2022 juju97 Warrior 12 12475 1000 996 85 23 17 4273.95 351.00
3 35482956 Turker Uraz u.turker@lancaster.ac.uk 05-Mar-2022 Uraz-The-Magnificent Mage 34 34925 1200 1094 34 49 21 64 11397.00 700.00
4 64345236 Ricki Boswell-Challand r.boswell-challand@lancaster.ac.uk 24-Apr-2022 Calvin Merchant 18 21765 950 950 54 53 36 34950.00 3705.00
5 64345236 Ricki Boswell-Challand r.boswell-challand@lancaster.ac.uk 13-May2022 Hobbes Warrior 95 95678 1500 1500 88 79 84 0 0
6 15468336 Jones Susan sj56@gmail.com 15-Mar-2022 SneakySue Thief 7 7201 900 856 37 12 56 11730.34 295.00
7 54387937 Schmidt Johan jjs46@hotmail.com 08-Jan2023 SpacemanSpiff Mage 3 1085 250 227 09 19 8 31 548.00 102.00
8 15468336 Jones Susan sj56@gmail.com 14-Jul-2022 19-Aug-2022 DarkMage Mage 3 2012 250 250 12 17 9 21 0.00 0.00

15
hk1234566/SQL/Items.csv Normal file
View File

@@ -0,0 +1,15 @@
Character,Item,Item_Type,WeaponType,Range,Price,Quantity,DefendScore,AttackScore,HealingScore,ManaScore,SingleUse,wearable,worn,BodyPart,Equipped
juju97,Broadsword,Weapon,Melee,,175,1,,24,,,0,0,,,1
juju97,breastplate,Armour,,,290,1,18,,,,0,1,1,torso,0
juju97,slingshot,Weapon,Projectile,30,50,1,,13,,,0,0,,,0
Uraz-The-Magnificent,Wizard's Staff,Artefact,,,3500,1,0,0,,37,0,,,,1
Uraz-The-Magnificent,Wizard's Robe,Clothing,,,2000,1,10,,,,,1,1,torso,0
juju97,Tunic,Clothing,,,5,1,1,0,,,0,1,1,torso,
Uraz-The-Magnificent,Apple,Food,,,1,1,,,10,,1,,,,0
juju97,Bread,Food,,,0.75,3,,,8,,1,,,,0
SneakySue,Dagger,Weapon,Melee,,12,1,1,10,0,,0,0,,,1
SpacemanSpiff,Transmogrifier,Artefact,,,54000,1,,,,500,0,0,,,1
SpacemanSpiff,Can of Tuna,Food,,,3,4,,,15,,1,0,,,1
Calvin,Axe,Weapon,Melee,,80,1,,,,,,,,,1
juju97,Cloak of Invisibility,Clothing,,,4500,1,,,,75,,1,0,torso,
Uraz-The-Magnificent,Cheese,Food,,,6,10,,,12,,1,0,0,,0
1 Character Item Item_Type WeaponType Range Price Quantity DefendScore AttackScore HealingScore ManaScore SingleUse wearable worn BodyPart Equipped
2 juju97 Broadsword Weapon Melee 175 1 24 0 0 1
3 juju97 breastplate Armour 290 1 18 0 1 1 torso 0
4 juju97 slingshot Weapon Projectile 30 50 1 13 0 0 0
5 Uraz-The-Magnificent Wizard's Staff Artefact 3500 1 0 0 37 0 1
6 Uraz-The-Magnificent Wizard's Robe Clothing 2000 1 10 1 1 torso 0
7 juju97 Tunic Clothing 5 1 1 0 0 1 1 torso
8 Uraz-The-Magnificent Apple Food 1 1 10 1 0
9 juju97 Bread Food 0.75 3 8 1 0
10 SneakySue Dagger Weapon Melee 12 1 1 10 0 0 0 1
11 SpacemanSpiff Transmogrifier Artefact 54000 1 500 0 0 1
12 SpacemanSpiff Can of Tuna Food 3 4 15 1 0 1
13 Calvin Axe Weapon Melee 80 1 1
14 juju97 Cloak of Invisibility Clothing 4500 1 75 1 0 torso
15 Uraz-The-Magnificent Cheese Food 6 10 12 1 0 0 0

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1 @@
https://sqliteonline.com/

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

42
hk1234566/SQL/notes.md Normal file
View File

@@ -0,0 +1,42 @@
Players.csv - The main player and character data Þle, which contains player character definitions, with customer and billing data.
Items.csv - Character inventory of weapons.
Combat.csv - Records the activity and results of battles between players.
1. Your initial E-R diagram (WEEK 8 30%)
You will provide two outputs:
1) An English paragraph given in a PDF Þle that describes your personal ERD and
2) your ERD (embedded in the PDF Þle). We will assess your ERD by reading your paragraph.
You will receive full mark if your paragraph matches to your ERD.
Otherwise we will reduce your marks based on the following rules:
a) For each participation constraint fault (-1.5%).
b) For each multiplicity fault (-1.5%).
c) For each notation/Symbol fault (-1.5%).
2. SQL DDL ( WEEK 9 30%)
You will provide a PDF Þle that contains your
Relational Schemas (RS),
Integrity Constraints (IC),
Normalisation reports for each RSs and
the DDL statements written in SQL.
You will receive full mark if
your RS and ICs matches with your ERD.
Otherwise, you we will reduce your mark based on the followings:
a) For each typo for SQL code (-0.6%).
b) Reporting wrong(or none) Normalisation level (for each table -1.5%).
c) For each IC mismatch (from ERD to ICs) and (from ICs to DDL) (-3%).
3. Java Library and SQL queries (WEEK 10 40%)
You will provide a PDF Þle that contains the English versions of your queries.
You will also provide a java library that reads CSV Þle and
builds required tables and answers the queries you provided.
You will receive full mark if your library successfully accomplishes these tasks.
Otherwise we will reduce your mark according to the following rules:
a) Not compiles (-40%).
b) Compiles but cannot populate tables (-20%).
c) Cannot read CSV Þles but read from other Þle format and populates tables (-0%).
d) For each SQL warning, error (-3%).
e) For each failed query (-3%).
f) Providing Relational Algebra statements (for each query) (+3%)