From 0937264f1ec8ac96f949862e8bd4777cacedf1ff Mon Sep 17 00:00:00 2001
From: IndieanaJones <47086570+IndieanaJones@users.noreply.github.com>
Date: Sun, 10 Feb 2019 21:12:17 -0500
Subject: [PATCH] [READY]New Side Antagonist: Space Dragon (#42551)
* Add files via upload
* Rename space_dragon.dm to code/modules/events/space_dragon.dm
* Adds Space Dragon
* Adds Space Dragon Event
* Remove Copied File
* Put antagonist definition in proper location for space dragon
* Update space_dragon.dm
* Removed passive health regen from space dragon
* Updated Weight and Earliness for Space Dragon
* Added Objective to Space Dragon, Updated Starting Blurb
* Cleaned Up the Objective Determiner
* Actually fix the space dragon objectives
* Fix the objective display for the space dragon's target
* Updated Space Dragon Intro Blurb
* Updated Centcom Message When Space Dragon Spawns
* Updated Space Dragon's description with new lore
* Clean Up Space Dragon's OnFire()
* Add Space Dragon Sprites
* Sprite in wrong location
* Properly adds Space Dragon Sprites
* Adds Space Dragon Tiny Sprite to be Carp
* Space Dragon Uses New Sprites, Tiny Form Updated
* Increased Time Til' Dragon Spawn
* Drake's Tail Sweep Now Uses Prebuilt Spell
Thanks to Cobblestone for the head's up on this.
---
code/datums/action.dm | 4 +
.../antagonists/space_dragon/space_dragon.dm | 31 ++++++++
code/modules/events/space_dragon.dm | 45 +++++++++++
.../simple_animal/hostile/megafauna/drake.dm | 73 +++++++++++++++++-
icons/mob/spacedragon.dmi | Bin 0 -> 8111 bytes
tgstation.dme | 2 +
6 files changed, 154 insertions(+), 1 deletion(-)
create mode 100644 code/modules/antagonists/space_dragon/space_dragon.dm
create mode 100644 code/modules/events/space_dragon.dm
create mode 100644 icons/mob/spacedragon.dmi
diff --git a/code/datums/action.dm b/code/datums/action.dm
index 323f81cb1eb..62842687c51 100644
--- a/code/datums/action.dm
+++ b/code/datums/action.dm
@@ -708,6 +708,10 @@
small_icon = 'icons/mob/lavaland/lavaland_monsters.dmi'
small_icon_state = "ash_whelp"
+/datum/action/small_sprite/spacedragon
+ small_icon = 'icons/mob/animal.dmi'
+ small_icon_state = "carp"
+
/datum/action/small_sprite/Trigger()
..()
if(!small)
diff --git a/code/modules/antagonists/space_dragon/space_dragon.dm b/code/modules/antagonists/space_dragon/space_dragon.dm
new file mode 100644
index 00000000000..97f45bba53b
--- /dev/null
+++ b/code/modules/antagonists/space_dragon/space_dragon.dm
@@ -0,0 +1,31 @@
+/datum/antagonist/space_dragon
+ name = "Space Dragon"
+ show_in_antagpanel = FALSE
+ show_name_in_check_antagonists = TRUE
+
+/datum/antagonist/space_dragon/greet()
+ to_chat(owner, "I am Space Dragon, ex-space carp, and defender of the secrets of constellation, Draco.")
+ to_chat(owner, "Fabulous secret powers were revealed to me the day I held aloft a wizard's staff of change and said 'By the power of Draco, I have the power!'")
+ to_chat(owner, "The wizard was turned into the short-lived Pastry Cat while I became Space Dragon, the most powerful beast in the universe.")
+ to_chat(owner, "Clicking a tile will shoot fire onto that tile.")
+ to_chat(owner, "Alt-clicking will let me do a tail swipe, knocking down entities in a tile radius around me.")
+ to_chat(owner, "Attacking dead bodies will allow me to gib them to restore health.")
+ to_chat(owner, "From the wizard's writings, he had been studying this station and its hierarchy. From this, I know who leads the station, and will kill them so the station underlings see me as their new leader.")
+ owner.announce_objectives()
+ SEND_SOUND(owner.current, sound('sound/magic/demon_attack1.ogg'))
+
+/datum/antagonist/space_dragon/proc/forge_objectives()
+ var/current_heads = SSjob.get_all_heads()
+ var/datum/objective/assassinate/killchosen = new
+ killchosen.owner = owner
+ var/datum/mind/selected = pick(current_heads)
+ killchosen.target = selected
+ killchosen.update_explanation_text()
+ objectives += killchosen
+ var/datum/objective/survive/survival = new
+ survival.owner = owner
+ objectives += survival
+
+/datum/antagonist/space_dragon/on_gain()
+ forge_objectives()
+ . = ..()
diff --git a/code/modules/events/space_dragon.dm b/code/modules/events/space_dragon.dm
new file mode 100644
index 00000000000..e6e197f5aa3
--- /dev/null
+++ b/code/modules/events/space_dragon.dm
@@ -0,0 +1,45 @@
+/datum/round_event_control/space_dragon
+ name = "Spawn Space Dragon"
+ typepath = /datum/round_event/ghost_role/space_dragon
+ max_occurrences = 1
+ weight = 8
+ earliest_start = 70 MINUTES
+ min_players = 20
+
+/datum/round_event/ghost_role/space_dragon
+ minimum_required = 1
+ role_name = "Space Dragon"
+ fakeable = FALSE
+
+/datum/round_event/ghost_role/space_dragon/announce(fake)
+ priority_announce("It appears a lifeform with magical traces is approaching [station_name()], please stand-by.", "Lifesign Alert")
+
+
+/datum/round_event/ghost_role/space_dragon/spawn_role()
+ var/list/candidates = get_candidates(ROLE_ALIEN, null, ROLE_ALIEN)
+ if(!candidates.len)
+ return NOT_ENOUGH_PLAYERS
+
+ var/mob/dead/selected = pick(candidates)
+
+ var/datum/mind/player_mind = new /datum/mind(selected.key)
+ player_mind.active = TRUE
+
+ var/list/spawn_locs = list()
+ for(var/obj/effect/landmark/carpspawn/C in GLOB.landmarks_list)
+ spawn_locs += (C.loc)
+ if(!spawn_locs.len)
+ message_admins("No valid spawn locations found, aborting...")
+ return MAP_ERROR
+
+ var/mob/living/simple_animal/hostile/megafauna/dragon/space_dragon/S = new ((pick(spawn_locs)))
+ player_mind.transfer_to(S)
+ player_mind.assigned_role = "Space Dragon"
+ player_mind.special_role = "Space Dragon"
+ player_mind.add_antag_datum(/datum/antagonist/space_dragon)
+ playsound(S, 'sound/magic/ethereal_exit.ogg', 50, 1, -1)
+ message_admins("[ADMIN_LOOKUPFLW(S)] has been made into a Space Dragon by an event.")
+ log_game("[key_name(S)] was spawned as a Space Dragon by an event.")
+ spawned_mobs += S
+ return SUCCESSFUL_SPAWN
+
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
index b804f9558dd..b18d56477c8 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
@@ -491,4 +491,75 @@ Difficulty: Medium
butcher_results = list(/obj/item/stack/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/bone = 30)
/mob/living/simple_animal/hostile/megafauna/dragon/lesser/grant_achievement(medaltype,scoretype)
- return
\ No newline at end of file
+ return
+
+/mob/living/simple_animal/hostile/megafauna/dragon/space_dragon
+ name = "space dragon"
+ maxHealth = 250
+ health = 250
+ faction = list("neutral")
+ desc = "A space carp turned dragon by vile magic. Has the same ferocity of a space carp, but also a much more enabling body."
+ icon = 'icons/mob/spacedragon.dmi'
+ icon_state = "spacedragon"
+ icon_living = "spacedragon"
+ icon_dead = "spacedragon_dead"
+ obj_damage = 80
+ melee_damage_upper = 35
+ melee_damage_lower = 35
+ speed = 0
+ mouse_opacity = MOUSE_OPACITY_ICON
+ loot = list()
+ crusher_loot = list()
+ butcher_results = list(/obj/item/stack/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/bone = 30)
+ move_force = MOVE_FORCE_NORMAL
+ move_resist = MOVE_FORCE_NORMAL
+ pull_force = MOVE_FORCE_NORMAL
+ deathmessage = "screeches as its wings turn to dust and it collapses on the floor, life estinguished."
+ var/datum/action/small_sprite/carpsprite = new/datum/action/small_sprite/spacedragon()
+
+/mob/living/simple_animal/hostile/megafauna/dragon/space_dragon/grant_achievement(medaltype,scoretype)
+ return
+
+/mob/living/simple_animal/hostile/megafauna/dragon/space_dragon/Initialize()
+ carpsprite.Grant(src)
+ mob_spell_list += new /obj/effect/proc_holder/spell/aoe_turf/repulse/spacedragon(src)
+ . = ..()
+ smallsprite.Remove(src)
+
+/mob/living/simple_animal/hostile/megafauna/dragon/space_dragon/proc/fire_stream(var/atom/at = target)
+ playsound(get_turf(src),'sound/magic/fireball.ogg', 200, 1)
+ if(QDELETED(src) || stat == DEAD) // we dead no fire
+ return
+ var/range = 20
+ var/list/turfs = list()
+ turfs = line_target(0, range, at)
+ INVOKE_ASYNC(src, .proc/fire_line, turfs)
+
+/mob/living/simple_animal/hostile/megafauna/dragon/space_dragon/OpenFire()
+ if(swooping)
+ return
+ ranged_cooldown = world.time + ranged_cooldown_time
+ fire_stream()
+
+/obj/effect/proc_holder/spell/aoe_turf/repulse/spacedragon
+ name = "Tail Sweep"
+ desc = "Throw back attackers with a sweep of your tail."
+ sound = 'sound/magic/tail_swing.ogg'
+ charge_max = 150
+ clothes_req = FALSE
+ antimagic_allowed = TRUE
+ range = 1
+ cooldown_min = 150
+ invocation_type = "none"
+ sparkle_path = /obj/effect/temp_visual/dir_setting/tailsweep
+ action_icon = 'icons/mob/actions/actions_xeno.dmi'
+ action_icon_state = "tailsweep"
+ action_background_icon_state = "bg_alien"
+ anti_magic_check = FALSE
+
+/obj/effect/proc_holder/spell/aoe_turf/repulse/spacedragon/cast(list/targets,mob/user = usr)
+ if(iscarbon(user))
+ var/mob/living/carbon/C = user
+ playsound(C.loc,'sound/effects/hit_punch.ogg', 80, 1, 1)
+ C.spin(6,1)
+ ..(targets, user, 60)
diff --git a/icons/mob/spacedragon.dmi b/icons/mob/spacedragon.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..98f20ea8851d5c7c1cf3c03cb93aa7ec1d294074
GIT binary patch
literal 8111
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
literal 0
HcmV?d00001
diff --git a/tgstation.dme b/tgstation.dme
index a79fe2e5568..a6b158030da 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -1316,6 +1316,7 @@
#include "code\modules\antagonists\slaughter\slaughter.dm"
#include "code\modules\antagonists\slaughter\slaughter_antag.dm"
#include "code\modules\antagonists\slaughter\slaughterevent.dm"
+#include "code\modules\antagonists\space_dragon\space_dragon.dm"
#include "code\modules\antagonists\survivalist\survivalist.dm"
#include "code\modules\antagonists\swarmer\swarmer.dm"
#include "code\modules\antagonists\swarmer\swarmer_event.dm"
@@ -1602,6 +1603,7 @@
#include "code\modules\events\radiation_storm.dm"
#include "code\modules\events\sentience.dm"
#include "code\modules\events\shuttle_loan.dm"
+#include "code\modules\events\space_dragon.dm"
#include "code\modules\events\spacevine.dm"
#include "code\modules\events\spider_infestation.dm"
#include "code\modules\events\spontaneous_appendicitis.dm"