mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-28 02:53:11 +00:00
[MIRROR] Health & Damage in Mob Spawner (#6994)
Co-authored-by: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> Co-authored-by: Raeschen <rycoop29@gmail.com>
This commit is contained in:
@@ -59,10 +59,20 @@
|
||||
data["default_flavor_text"] = M.flavor_text
|
||||
if(new_path && istype(M, /mob/living))
|
||||
var/mob/living/L = M
|
||||
|
||||
// AI Stuff
|
||||
ai_type = (L.ai_holder_type ? L.ai_holder_type : /datum/ai_holder/simple_mob/inert)
|
||||
faction = (L.faction ? L.faction : "neutral")
|
||||
intent = (L.a_intent ? L.a_intent : I_HELP)
|
||||
new_path = FALSE
|
||||
|
||||
data["max_health"] = L.maxHealth
|
||||
data["health"] = L.health
|
||||
if(istype(L, /mob/living/simple_mob))
|
||||
var/mob/living/simple_mob/S = L
|
||||
data["melee_damage_lower"] = S.melee_damage_lower ? S.melee_damage_lower : 0
|
||||
data["melee_damage_upper"] = S.melee_damage_upper ? S.melee_damage_upper : 0
|
||||
qdel(S)
|
||||
qdel(L)
|
||||
qdel(M)
|
||||
data["ai_type"] = ai_type
|
||||
@@ -133,9 +143,19 @@
|
||||
M.name = sanitize(name)
|
||||
M.desc = sanitize(params["desc"])
|
||||
M.flavor_text = sanitize(params["flavor_text"])
|
||||
if(use_custom_ai)
|
||||
if(istype(M, /mob/living))
|
||||
var/mob/living/L = M
|
||||
if(isnum(params["max_health"]))
|
||||
L.maxHealth = params["max_health"]
|
||||
if(isnum(params["health"]))
|
||||
L.health = params["health"]
|
||||
if(istype(M, /mob/living/simple_mob))
|
||||
var/mob/living/simple_mob/S = L
|
||||
if(isnum(params["melee_damage_lower"]))
|
||||
S.melee_damage_lower = params["melee_damage_lower"]
|
||||
if(isnum(params["melee_damage_upper"]))
|
||||
S.melee_damage_upper = params["melee_damage_upper"]
|
||||
if(use_custom_ai)
|
||||
L.ai_holder_type = ai_type
|
||||
L.faction = faction
|
||||
L.a_intent = intent
|
||||
|
||||
@@ -15,6 +15,11 @@ type Data = {
|
||||
faction: string;
|
||||
intent: string;
|
||||
|
||||
max_health: number;
|
||||
health: number;
|
||||
melee_damage_lower: number;
|
||||
melee_damage_upper: number;
|
||||
|
||||
default_speak_emotes: string[];
|
||||
|
||||
loc_lock: BooleanLike;
|
||||
@@ -71,6 +76,22 @@ const GeneralMobSettings = (props, context) => {
|
||||
);
|
||||
const [faction] = useLocalState(context, 'setMobFaction', data.faction);
|
||||
const [intent] = useLocalState(context, 'setIntent', data.intent);
|
||||
const [maxHealth, setMaxHealth] = useLocalState(
|
||||
context,
|
||||
'maxHealth',
|
||||
data.max_health
|
||||
);
|
||||
const [health, setHealth] = useLocalState(context, 'health', data.health);
|
||||
const [meleeDamageLower, setMeleeDamageLower] = useLocalState(
|
||||
context,
|
||||
'meleeDamageLower',
|
||||
data.melee_damage_lower
|
||||
);
|
||||
const [meleeDamageUpper, setMeleeDamageUpper] = useLocalState(
|
||||
context,
|
||||
'meleeDamageUpper',
|
||||
data.melee_damage_upper
|
||||
);
|
||||
const [desc, setDesc] = useLocalState(context, 'desc', data.default_desc);
|
||||
const [flavorText, setFlavorText] = useLocalState(
|
||||
context,
|
||||
@@ -207,6 +228,45 @@ const GeneralMobSettings = (props, context) => {
|
||||
</LabeledList.Item>
|
||||
</LabeledList>
|
||||
</Section>
|
||||
<Section title="Health & Damage">
|
||||
<LabeledList>
|
||||
{(maxHealth && (
|
||||
<>
|
||||
<LabeledList.Item label="Max Health">
|
||||
<NumberInput
|
||||
value={maxHealth}
|
||||
onChange={(e, val) => setMaxHealth(val)}
|
||||
/>
|
||||
</LabeledList.Item>
|
||||
<LabeledList.Item label="Health">
|
||||
<NumberInput
|
||||
value={health}
|
||||
onChange={(e, val) => setHealth(val)}
|
||||
/>
|
||||
</LabeledList.Item>
|
||||
<br />
|
||||
</>
|
||||
)) ||
|
||||
"Note: Only available for '/mob/living'"}
|
||||
{(meleeDamageLower && (
|
||||
<>
|
||||
<LabeledList.Item label="Melee Damage (Lower)">
|
||||
<NumberInput
|
||||
value={meleeDamageLower}
|
||||
onChange={(e, val) => setMeleeDamageLower(val)}
|
||||
/>
|
||||
</LabeledList.Item>
|
||||
<LabeledList.Item label="Melee Damage (Upper)">
|
||||
<NumberInput
|
||||
value={meleeDamageUpper}
|
||||
onChange={(e, val) => setMeleeDamageUpper(val)}
|
||||
/>
|
||||
</LabeledList.Item>
|
||||
</>
|
||||
)) ||
|
||||
"Note: Only available for '/mob/living/simple_mob'"}
|
||||
</LabeledList>
|
||||
</Section>
|
||||
</Flex.Item>
|
||||
</Flex>
|
||||
</Section>
|
||||
@@ -239,6 +299,10 @@ const GeneralMobSettings = (props, context) => {
|
||||
amount: amount,
|
||||
name: name || data.default_path_name,
|
||||
desc: desc || data.default_desc,
|
||||
max_health: maxHealth || data.max_health,
|
||||
health: health || data.health,
|
||||
melee_damage_lower: meleeDamageLower || data.melee_damage_lower,
|
||||
melee_damage_upper: meleeDamageUpper || data.melee_damage_upper,
|
||||
flavor_text: flavorText || data.default_flavor_text,
|
||||
size_multiplier: sizeMultiplier * 0.01,
|
||||
x: data.loc_lock ? data.loc_x : x,
|
||||
|
||||
@@ -15,6 +15,11 @@ type Data = {
|
||||
faction: string;
|
||||
intent: string;
|
||||
|
||||
max_health: number;
|
||||
health: number;
|
||||
melee_damage_lower: number;
|
||||
melee_damage_upper: number;
|
||||
|
||||
default_speak_emotes: string[];
|
||||
|
||||
loc_lock: BooleanLike;
|
||||
@@ -71,6 +76,22 @@ const GeneralMobSettings = (props, context) => {
|
||||
);
|
||||
const [faction] = useLocalState(context, 'setMobFaction', data.faction);
|
||||
const [intent] = useLocalState(context, 'setIntent', data.intent);
|
||||
const [maxHealth, setMaxHealth] = useLocalState(
|
||||
context,
|
||||
'maxHealth',
|
||||
data.max_health
|
||||
);
|
||||
const [health, setHealth] = useLocalState(context, 'health', data.health);
|
||||
const [meleeDamageLower, setMeleeDamageLower] = useLocalState(
|
||||
context,
|
||||
'meleeDamageLower',
|
||||
data.melee_damage_lower
|
||||
);
|
||||
const [meleeDamageUpper, setMeleeDamageUpper] = useLocalState(
|
||||
context,
|
||||
'meleeDamageUpper',
|
||||
data.melee_damage_upper
|
||||
);
|
||||
const [desc, setDesc] = useLocalState(context, 'desc', data.default_desc);
|
||||
const [flavorText, setFlavorText] = useLocalState(
|
||||
context,
|
||||
@@ -207,6 +228,45 @@ const GeneralMobSettings = (props, context) => {
|
||||
</LabeledList.Item>
|
||||
</LabeledList>
|
||||
</Section>
|
||||
<Section title="Health & Damage">
|
||||
<LabeledList>
|
||||
{(maxHealth && (
|
||||
<>
|
||||
<LabeledList.Item label="Max Health">
|
||||
<NumberInput
|
||||
value={maxHealth}
|
||||
onChange={(e, val) => setMaxHealth(val)}
|
||||
/>
|
||||
</LabeledList.Item>
|
||||
<LabeledList.Item label="Health">
|
||||
<NumberInput
|
||||
value={health}
|
||||
onChange={(e, val) => setHealth(val)}
|
||||
/>
|
||||
</LabeledList.Item>
|
||||
<br />
|
||||
</>
|
||||
)) ||
|
||||
"Note: Only available for '/mob/living'"}
|
||||
{(meleeDamageLower && (
|
||||
<>
|
||||
<LabeledList.Item label="Melee Damage (Lower)">
|
||||
<NumberInput
|
||||
value={meleeDamageLower}
|
||||
onChange={(e, val) => setMeleeDamageLower(val)}
|
||||
/>
|
||||
</LabeledList.Item>
|
||||
<LabeledList.Item label="Melee Damage (Upper)">
|
||||
<NumberInput
|
||||
value={meleeDamageUpper}
|
||||
onChange={(e, val) => setMeleeDamageUpper(val)}
|
||||
/>
|
||||
</LabeledList.Item>
|
||||
</>
|
||||
)) ||
|
||||
"Note: Only available for '/mob/living/simple_mob'"}
|
||||
</LabeledList>
|
||||
</Section>
|
||||
</Flex.Item>
|
||||
</Flex>
|
||||
</Section>
|
||||
@@ -239,6 +299,10 @@ const GeneralMobSettings = (props, context) => {
|
||||
amount: amount,
|
||||
name: name || data.default_path_name,
|
||||
desc: desc || data.default_desc,
|
||||
max_health: maxHealth || data.max_health,
|
||||
health: health || data.health,
|
||||
melee_damage_lower: meleeDamageLower || data.melee_damage_lower,
|
||||
melee_damage_upper: meleeDamageUpper || data.melee_damage_upper,
|
||||
flavor_text: flavorText || data.default_flavor_text,
|
||||
size_multiplier: sizeMultiplier * 0.01,
|
||||
x: data.loc_lock ? data.loc_x : x,
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user